/**
 * Resize function without multiple trigger
 *
 * Usage:
 * $(window).smartresize(function(){
 *     // code here
 * });
 */
(function ($, sr) {
    // debouncing function from John Hann
    // http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/
    var debounce = function (func, threshold, execAsap) {
        var timeout;

        return function debounced() {
            var obj = this,
                args = arguments;
            function delayed() {
                if (!execAsap) func.apply(obj, args);
                timeout = null;
            }

            if (timeout) clearTimeout(timeout);
            else if (execAsap) func.apply(obj, args);

            timeout = setTimeout(delayed, threshold || 100);
        };
    };

    // smartresize
    jQuery.fn[sr] = function (fn) {
        return fn ? this.bind("resize", debounce(fn)) : this.trigger(sr);
    };
})(jQuery, "smartresize");
/**
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

var CURRENT_URL = window.location.href.split("#")[0].split("?")[0],
    $BODY = $("body"),
    $MENU_TOGGLE = $("#menu_toggle"),
    $SIDEBAR_MENU = $("#sidebar-menu"),
    $SIDEBAR_FOOTER = $(".sidebar-footer"),
    $LEFT_COL = $(".left_col"),
    $RIGHT_COL = $(".right_col"),
    $NAV_MENU = $(".nav_menu"),
    $FOOTER = $("footer");

// Sidebar
function init_sidebar() {
    // TODO: This is some kind of easy fix, maybe we can improve this
    var setContentHeight = function () {
        // reset height
        $RIGHT_COL.css("min-height", $(window).height());

        var bodyHeight = $BODY.outerHeight(),
            footerHeight = $BODY.hasClass("footer_fixed") ? -10 : $FOOTER.height(),
            leftColHeight = $LEFT_COL.eq(1).height() + $SIDEBAR_FOOTER.height(),
            contentHeight = bodyHeight < leftColHeight ? leftColHeight : bodyHeight;

        // normalize content
        contentHeight -= $NAV_MENU.height() + footerHeight;

        $RIGHT_COL.css("min-height", contentHeight);
    };

    var openUpMenu = function () {
        $SIDEBAR_MENU.find("li").removeClass("active active-sm");
        $SIDEBAR_MENU.find("li ul").slideUp();
    };

    $SIDEBAR_MENU.find("a").on("click", function (ev) {
        var $li = $(this).parent();

        if ($li.is(".active")) {
            $li.removeClass("active active-sm");
            $("ul:first", $li).slideUp(function () {
                setContentHeight();
            });
        } else {
            // prevent closing menu if we are on child menu
            if (!$li.parent().is(".child_menu")) {
                openUpMenu();
            } else {
                if ($BODY.is("nav-sm")) {
                    if (!$li.parent().is("child_menu")) {
                        openUpMenu();
                    }
                }
            }

            $li.addClass("active");

            $("ul:first", $li).slideDown(function () {
                setContentHeight();
            });
        }
    });

    // toggle small or large menu
    $MENU_TOGGLE.on("click", function () {
        if ($BODY.hasClass("nav-md")) {
            $SIDEBAR_MENU.find("li.active ul").hide();
            $SIDEBAR_MENU.find("li.active").addClass("active-sm").removeClass("active");
        } else {
            $SIDEBAR_MENU.find("li.active-sm ul").show();
            $SIDEBAR_MENU.find("li.active-sm").addClass("active").removeClass("active-sm");
        }

        $BODY.toggleClass("nav-md nav-sm");

        setContentHeight();

        $(".dataTable").each(function () {
            $(this).dataTable().fnDraw();
        });
    });

    // check active menu
    $SIDEBAR_MENU
        .find('a[href="' + CURRENT_URL + '"]')
        .parent("li")
        .addClass("current-page");

    $SIDEBAR_MENU
        .find("a")
        .filter(function () {
            return this.href == CURRENT_URL;
        })
        .parent("li")
        .addClass("current-page")
        .parents("ul")
        .slideDown(function () {
            setContentHeight();
        })
        .parent()
        .addClass("active");

    // recompute content when resizing
    $(window).smartresize(function () {
        setContentHeight();
    });

    setContentHeight();

    // fixed sidebar
    if ($.fn.mCustomScrollbar) {
        $(".menu_fixed").mCustomScrollbar({
            autoHideScrollbar: true,
            theme: "minimal",
            mouseWheel: { preventDefault: true },
        });
    }
}
// /Sidebar

// Panel toolbox
$(document).ready(function () {
    $(".collapse-link").on("click", function () {
        var $BOX_PANEL = $(this).closest(".x_panel"),
            $ICON = $(this).find("i"),
            $BOX_CONTENT = $BOX_PANEL.find(".x_content");

        // fix for some div with hardcoded fix class
        if ($BOX_PANEL.attr("style")) {
            $BOX_CONTENT.slideToggle(200, function () {
                $BOX_PANEL.removeAttr("style");
            });
        } else {
            $BOX_CONTENT.slideToggle(200);
            $BOX_PANEL.css("height", "auto");
        }

        $ICON.toggleClass("fa-chevron-up fa-chevron-down");
    });

    $(".close-link").click(function () {
        var $BOX_PANEL = $(this).closest(".x_panel");

        $BOX_PANEL.remove();
    });
});
// /Panel toolbox

// Tooltip
$(document).ready(function () {
    $('[data-toggle="tooltip"]').tooltip({
        container: "body",
    });
});
// /Tooltip

// Progressbar
$(document).ready(function () {
    if ($(".progress .progress-bar")[0]) {
        $(".progress .progress-bar").progressbar();
    }
});
// /Progressbar

// Switchery
$(document).ready(function () {
    if ($(".js-switch")[0]) {
        var elems = Array.prototype.slice.call(document.querySelectorAll(".js-switch"));
        elems.forEach(function (html) {
            var switchery = new Switchery(html, {
                color: "#26B99A",
            });
        });
    }
});
// /Switchery

// iCheck
$(document).ready(function () {
    if ($("input.flat")[0]) {
        $(document).ready(function () {
            $("input.flat").iCheck({
                checkboxClass: "icheckbox_flat-green",
                radioClass: "iradio_flat-green",
            });
        });
    }
});
// /iCheck

// Table
$("table input").on("ifChecked", function () {
    checkState = "";
    $(this).parent().parent().parent().addClass("selected");
    countChecked();
});
$("table input").on("ifUnchecked", function () {
    checkState = "";
    $(this).parent().parent().parent().removeClass("selected");
    countChecked();
});

var checkState = "";

$(".bulk_action input").on("ifChecked", function () {
    checkState = "";
    $(this).parent().parent().parent().addClass("selected");
    countChecked();
});
$(".bulk_action input").on("ifUnchecked", function () {
    checkState = "";
    $(this).parent().parent().parent().removeClass("selected");
    countChecked();
});
$(".bulk_action input#check-all").on("ifChecked", function () {
    checkState = "all";
    countChecked();
});
$(".bulk_action input#check-all").on("ifUnchecked", function () {
    checkState = "none";
    countChecked();
});

function countChecked() {
    if (checkState === "all") {
        $(".bulk_action input[name='table_records']").iCheck("check");
    }
    if (checkState === "none") {
        $(".bulk_action input[name='table_records']").iCheck("uncheck");
    }

    var checkCount = $(".bulk_action input[name='table_records']:checked").length;

    if (checkCount) {
        $(".column-title").hide();
        $(".bulk-actions").show();
        $(".action-cnt").html(checkCount + " Records Selected");
    } else {
        $(".column-title").show();
        $(".bulk-actions").hide();
    }
}

// Accordion
$(document).ready(function () {
    $(".expand").on("click", function () {
        $(this).next().slideToggle(200);
        $expand = $(this).find(">:first-child");

        if ($expand.text() == "+") {
            $expand.text("-");
        } else {
            $expand.text("+");
        }
    });
});

// NProgress
if (typeof NProgress != "undefined") {
    $(document).ready(function () {
        NProgress.start();
    });

    $(window).on("load", function () {
        NProgress.done();
    });
}

//hover and retain popover when on popover content
var originalLeave = $.fn.popover.Constructor.prototype.leave;
$.fn.popover.Constructor.prototype.leave = function (obj) {
    var self =
        obj instanceof this.constructor
            ? obj
            : $(obj.currentTarget)
                [this.type](this.getDelegateOptions())
                .data("bs." + this.type);
    var container, timeout;

    originalLeave.call(this, obj);

    if (obj.currentTarget) {
        container = $(obj.currentTarget).siblings(".popover");
        timeout = self.timeout;
        container.one("mouseenter", function () {
            //We entered the actual popover – call off the dogs
            clearTimeout(timeout);
            //Let's monitor popover content instead
            container.one("mouseleave", function () {
                $.fn.popover.Constructor.prototype.leave.call(self, self);
            });
        });
    }
};

$("body").popover({
    selector: "[data-popover]",
    trigger: "click hover",
    delay: {
        show: 50,
        hide: 400,
    },
});

function gd(year, month, day) {
    return new Date(year, month - 1, day).getTime();
}

function init_flot_chart() {
    if (typeof $.plot === "undefined") {
        return;
    }

    console.log("init_flot_chart");
    var randNum = function () {
        return Math.floor(Math.random() * (1 + 40 - 20)) + 20;
    };

    var arr_data1 = [
        [gd(2012, 1, 1), 17],
        [gd(2012, 1, 2), 74],
        [gd(2012, 1, 3), 6],
        [gd(2012, 1, 4), 39],
        [gd(2012, 1, 5), 20],
        [gd(2012, 1, 6), 85],
        [gd(2012, 1, 7), 7],
    ];

    var arr_data2 = [
        [gd(2012, 1, 1), 82],
        [gd(2012, 1, 2), 23],
        [gd(2012, 1, 3), 66],
        [gd(2012, 1, 4), 9],
        [gd(2012, 1, 5), 119],
        [gd(2012, 1, 6), 6],
        [gd(2012, 1, 7), 9],
    ];

    var arr_data3 = [
        [0, 1],
        [1, 9],
        [2, 6],
        [3, 10],
        [4, 5],
        [5, 17],
        [6, 6],
        [7, 10],
        [8, 7],
        [9, 11],
        [10, 35],
        [11, 9],
        [12, 12],
        [13, 5],
        [14, 3],
        [15, 4],
        [16, 9],
    ];

    var chart_plot_02_data = [];

    var chart_plot_03_data = [
        [0, 1],
        [1, 9],
        [2, 6],
        [3, 10],
        [4, 5],
        [5, 17],
        [6, 6],
        [7, 10],
        [8, 7],
        [9, 11],
        [10, 35],
        [11, 9],
        [12, 12],
        [13, 5],
        [14, 3],
        [15, 4],
        [16, 9],
    ];

    for (var i = 0; i < 30; i++) {
        chart_plot_02_data.push([i, randNum() + i + i + 10]);
    }

    var chart_plot_01_settings = {
        series: {
            lines: {
                show: false,
                fill: true,
            },
            splines: {
                show: true,
                tension: 0.4,
                lineWidth: 1,
                fill: 0.4,
            },
            points: {
                radius: 0,
                show: true,
            },
            shadowSize: 2,
        },
        grid: {
            verticalLines: true,
            hoverable: true,
            clickable: true,
            tickColor: "#d5d5d5",
            borderWidth: 1,
            color: "#fff",
        },
        colors: ["rgba(38, 185, 154, 0.38)", "rgba(3, 88, 106, 0.38)"],
        xaxis: {
            tickColor: "rgba(51, 51, 51, 0.06)",
            mode: "time",
            tickSize: [1, "day"],
            //tickLength: 10,
            axisLabel: "Date",
            axisLabelUseCanvas: true,
            axisLabelFontSizePixels: 12,
            axisLabelFontFamily: "Verdana, Arial",
            axisLabelPadding: 10,
        },
        yaxis: {
            ticks: 8,
            tickColor: "rgba(51, 51, 51, 0.06)",
        },
        tooltip: false,
    };

    var chart_plot_02_settings = {
        grid: {
            show: true,
            aboveData: true,
            color: "#3f3f3f",
            labelMargin: 10,
            axisMargin: 0,
            borderWidth: 0,
            borderColor: null,
            minBorderMargin: 5,
            clickable: true,
            hoverable: true,
            autoHighlight: true,
            mouseActiveRadius: 100,
        },
        series: {
            lines: {
                show: true,
                fill: true,
                lineWidth: 2,
                steps: false,
            },
            points: {
                show: true,
                radius: 4.5,
                symbol: "circle",
                lineWidth: 3.0,
            },
        },
        legend: {
            position: "ne",
            margin: [0, -25],
            noColumns: 0,
            labelBoxBorderColor: null,
            labelFormatter: function (label, series) {
                return label + "&nbsp;&nbsp;";
            },
            width: 40,
            height: 1,
        },
        colors: ["#96CA59", "#3F97EB", "#72c380", "#6f7a8a", "#f7cb38", "#5a8022", "#2c7282"],
        shadowSize: 0,
        tooltip: true,
        tooltipOpts: {
            content: "%s: %y.0",
            xDateFormat: "%d/%m",
            shifts: {
                x: -30,
                y: -50,
            },
            defaultTheme: false,
        },
        yaxis: {
            min: 0,
        },
        xaxis: {
            mode: "time",
            minTickSize: [1, "day"],
            timeformat: "%d/%m/%y",
            min: chart_plot_02_data[0][0],
            max: chart_plot_02_data[20][0],
        },
    };

    var chart_plot_03_settings = {
        series: {
            curvedLines: {
                apply: true,
                active: true,
                monotonicFit: true,
            },
        },
        colors: ["#26B99A"],
        grid: {
            borderWidth: {
                top: 0,
                right: 0,
                bottom: 1,
                left: 1,
            },
            borderColor: {
                bottom: "#7F8790",
                left: "#7F8790",
            },
        },
    };

    if ($("#chart_plot_01").length) {
        console.log("Plot1");

        $.plot($("#chart_plot_01"), [arr_data1, arr_data2], chart_plot_01_settings);
    }

    if ($("#chart_plot_02").length) {
        console.log("Plot2");

        $.plot(
            $("#chart_plot_02"),
            [
                {
                    label: "Email Sent",
                    data: chart_plot_02_data,
                    lines: {
                        fillColor: "rgba(150, 202, 89, 0.12)",
                    },
                    points: {
                        fillColor: "#fff",
                    },
                },
            ],
            chart_plot_02_settings
        );
    }

    if ($("#chart_plot_03").length) {
        console.log("Plot3");

        $.plot(
            $("#chart_plot_03"),
            [
                {
                    label: "Registrations",
                    data: chart_plot_03_data,
                    lines: {
                        fillColor: "rgba(150, 202, 89, 0.12)",
                    },
                    points: {
                        fillColor: "#fff",
                    },
                },
            ],
            chart_plot_03_settings
        );
    }
}

/* STARRR */

function init_starrr() {
    if (typeof starrr === "undefined") {
        return;
    }
    console.log("init_starrr");

    $(".stars").starrr();

    $(".stars-existing").starrr({
        rating: 4,
    });

    $(".stars").on("starrr:change", function (e, value) {
        $(".stars-count").html(value);
    });

    $(".stars-existing").on("starrr:change", function (e, value) {
        $(".stars-count-existing").html(value);
    });
}

function init_JQVmap() {
    //console.log('check init_JQVmap [' + typeof (VectorCanvas) + '][' + typeof (jQuery.fn.vectorMap) + ']' );

    if (typeof jQuery.fn.vectorMap === "undefined") {
        return;
    }

    console.log("init_JQVmap");

    if ($("#world-map-gdp").length) {
        $("#world-map-gdp").vectorMap({
            map: "world_en",
            backgroundColor: null,
            color: "#ffffff",
            hoverOpacity: 0.7,
            selectedColor: "#666666",
            enableZoom: true,
            showTooltip: true,
            values: sample_data,
            scaleColors: ["#E6F2F0", "#149B7E"],
            normalizeFunction: "polynomial",
        });
    }

    if ($("#usa_map").length) {
        $("#usa_map").vectorMap({
            map: "usa_en",
            backgroundColor: null,
            color: "#ffffff",
            hoverOpacity: 0.7,
            selectedColor: "#666666",
            enableZoom: true,
            showTooltip: true,
            values: sample_data,
            scaleColors: ["#E6F2F0", "#149B7E"],
            normalizeFunction: "polynomial",
        });
    }
}

function init_skycons() {
    if (typeof Skycons === "undefined") {
        return;
    }
    console.log("init_skycons");

    var icons = new Skycons({
            color: "#73879C",
        }),
        list = [
            "clear-day",
            "clear-night",
            "partly-cloudy-day",
            "partly-cloudy-night",
            "cloudy",
            "rain",
            "sleet",
            "snow",
            "wind",
            "fog",
        ],
        i;

    for (i = list.length; i--; ) icons.set(list[i], list[i]);

    icons.play();
}

function init_chart_doughnut() {
    if (typeof Chart === "undefined") {
        return;
    }

    console.log("init_chart_doughnut");

    if ($(".canvasDoughnut").length) {
        var chart_doughnut_settings = {
            type: "doughnut",
            tooltipFillColor: "rgba(51, 51, 51, 0.55)",
            data: {
                labels: ["Symbian", "Blackberry", "Other", "Android", "IOS"],
                datasets: [
                    {
                        data: [15, 20, 30, 10, 30],
                        backgroundColor: ["#BDC3C7", "#9B59B6", "#E74C3C", "#26B99A", "#3498DB"],
                        hoverBackgroundColor: ["#CFD4D8", "#B370CF", "#E95E4F", "#36CAAB", "#49A9EA"],
                    },
                ],
            },
            options: {
                legend: false,
                responsive: false,
            },
        };

        $(".canvasDoughnut").each(function () {
            var chart_element = $(this);
            var chart_doughnut = new Chart(chart_element, chart_doughnut_settings);
        });
    }
}

function init_gauge() {
    if (typeof Gauge === "undefined") {
        return;
    }

    console.log("init_gauge [" + $(".gauge-chart").length + "]");

    console.log("init_gauge");

    var chart_gauge_settings = {
        lines: 12,
        angle: 0,
        lineWidth: 0.4,
        pointer: {
            length: 0.75,
            strokeWidth: 0.042,
            color: "#1D212A",
        },
        limitMax: "false",
        colorStart: "#1ABC9C",
        colorStop: "#1ABC9C",
        strokeColor: "#F0F3F3",
        generateGradient: true,
    };

    if ($("#chart_gauge_01").length) {
        var chart_gauge_01_elem = document.getElementById("chart_gauge_01");
        var chart_gauge_01 = new Gauge(chart_gauge_01_elem).setOptions(chart_gauge_settings);
    }

    if ($("#gauge-text").length) {
        chart_gauge_01.maxValue = 6000;
        chart_gauge_01.animationSpeed = 32;
        chart_gauge_01.set(3200);
        chart_gauge_01.setTextField(document.getElementById("gauge-text"));
    }

    if ($("#chart_gauge_02").length) {
        var chart_gauge_02_elem = document.getElementById("chart_gauge_02");
        var chart_gauge_02 = new Gauge(chart_gauge_02_elem).setOptions(chart_gauge_settings);
    }

    if ($("#gauge-text2").length) {
        chart_gauge_02.maxValue = 9000;
        chart_gauge_02.animationSpeed = 32;
        chart_gauge_02.set(2400);
        chart_gauge_02.setTextField(document.getElementById("gauge-text2"));
    }
}

/* SPARKLINES */

function init_sparklines() {
    if (typeof jQuery.fn.sparkline === "undefined") {
        return;
    }
    console.log("init_sparklines");

    $(".sparkline_one").sparkline(
        [2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 5, 6, 4, 5, 6, 3, 5, 4, 5, 4, 5, 4, 3, 4, 5, 6, 7, 5, 4, 3, 5, 6],
        {
            type: "bar",
            height: "125",
            barWidth: 13,
            colorMap: {
                7: "#a1a1a1",
            },
            barSpacing: 2,
            barColor: "#26B99A",
        }
    );

    $(".sparkline_two").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 5, 6, 7, 5, 4, 3, 5, 6], {
        type: "bar",
        height: "40",
        barWidth: 9,
        colorMap: {
            7: "#a1a1a1",
        },
        barSpacing: 2,
        barColor: "#26B99A",
    });

    $(".sparkline_three").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 5, 6, 7, 5, 4, 3, 5, 6], {
        type: "line",
        width: "200",
        height: "40",
        lineColor: "#26B99A",
        fillColor: "rgba(223, 223, 223, 0.57)",
        lineWidth: 2,
        spotColor: "#26B99A",
        minSpotColor: "#26B99A",
    });

    $(".sparkline11").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 6, 2, 4, 3, 4, 5, 4, 5, 4, 3], {
        type: "bar",
        height: "40",
        barWidth: 8,
        colorMap: {
            7: "#a1a1a1",
        },
        barSpacing: 2,
        barColor: "#26B99A",
    });

    $(".sparkline22").sparkline([2, 4, 3, 4, 7, 5, 4, 3, 5, 6, 2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 6], {
        type: "line",
        height: "40",
        width: "200",
        lineColor: "#26B99A",
        fillColor: "#ffffff",
        lineWidth: 3,
        spotColor: "#34495E",
        minSpotColor: "#34495E",
    });

    $(".sparkline_bar").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 5, 6, 4, 5, 6, 3, 5], {
        type: "bar",
        colorMap: {
            7: "#a1a1a1",
        },
        barColor: "#26B99A",
    });

    $(".sparkline_area").sparkline([5, 6, 7, 9, 9, 5, 3, 2, 2, 4, 6, 7], {
        type: "line",
        lineColor: "#26B99A",
        fillColor: "#26B99A",
        spotColor: "#4578a0",
        minSpotColor: "#728fb2",
        maxSpotColor: "#6d93c4",
        highlightSpotColor: "#ef5179",
        highlightLineColor: "#8ba8bf",
        spotRadius: 2.5,
        width: 85,
    });

    $(".sparkline_line").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 5, 6, 4, 5, 6, 3, 5], {
        type: "line",
        lineColor: "#26B99A",
        fillColor: "#ffffff",
        width: 85,
        spotColor: "#34495E",
        minSpotColor: "#34495E",
    });

    $(".sparkline_pie").sparkline([1, 1, 2, 1], {
        type: "pie",
        sliceColors: ["#26B99A", "#ccc", "#75BCDD", "#D66DE2"],
    });

    $(".sparkline_discreet").sparkline([4, 6, 7, 7, 4, 3, 2, 1, 4, 4, 2, 4, 3, 7, 8, 9, 7, 6, 4, 3], {
        type: "discrete",
        barWidth: 3,
        lineColor: "#26B99A",
        width: "85",
    });
}

/* AUTOCOMPLETE */

function init_autocomplete() {
    if (typeof $.fn.autocomplete === "undefined") {
        return;
    }
    console.log("init_autocomplete");

    var countries = {
        AD: "Andorra",
        A2: "Andorra Test",
        AE: "United Arab Emirates",
        AF: "Afghanistan",
        AG: "Antigua and Barbuda",
        AI: "Anguilla",
        AL: "Albania",
        AM: "Armenia",
        AN: "Netherlands Antilles",
        AO: "Angola",
        AQ: "Antarctica",
        AR: "Argentina",
        AS: "American Samoa",
        AT: "Austria",
        AU: "Australia",
        AW: "Aruba",
        AX: "Åland Islands",
        AZ: "Azerbaijan",
        BA: "Bosnia and Herzegovina",
        BB: "Barbados",
        BD: "Bangladesh",
        BE: "Belgium",
        BF: "Burkina Faso",
        BG: "Bulgaria",
        BH: "Bahrain",
        BI: "Burundi",
        BJ: "Benin",
        BL: "Saint Barthélemy",
        BM: "Bermuda",
        BN: "Brunei",
        BO: "Bolivia",
        BQ: "British Antarctic Territory",
        BR: "Brazil",
        BS: "Bahamas",
        BT: "Bhutan",
        BV: "Bouvet Island",
        BW: "Botswana",
        BY: "Belarus",
        BZ: "Belize",
        CA: "Canada",
        CC: "Cocos [Keeling] Islands",
        CD: "Congo - Kinshasa",
        CF: "Central African Republic",
        CG: "Congo - Brazzaville",
        CH: "Switzerland",
        CI: "Côte d’Ivoire",
        CK: "Cook Islands",
        CL: "Chile",
        CM: "Cameroon",
        CN: "China",
        CO: "Colombia",
        CR: "Costa Rica",
        CS: "Serbia and Montenegro",
        CT: "Canton and Enderbury Islands",
        CU: "Cuba",
        CV: "Cape Verde",
        CX: "Christmas Island",
        CY: "Cyprus",
        CZ: "Czech Republic",
        DD: "East Germany",
        DE: "Germany",
        DJ: "Djibouti",
        DK: "Denmark",
        DM: "Dominica",
        DO: "Dominican Republic",
        DZ: "Algeria",
        EC: "Ecuador",
        EE: "Estonia",
        EG: "Egypt",
        EH: "Western Sahara",
        ER: "Eritrea",
        ES: "Spain",
        ET: "Ethiopia",
        FI: "Finland",
        FJ: "Fiji",
        FK: "Falkland Islands",
        FM: "Micronesia",
        FO: "Faroe Islands",
        FQ: "French Southern and Antarctic Territories",
        FR: "France",
        FX: "Metropolitan France",
        GA: "Gabon",
        GB: "United Kingdom",
        GD: "Grenada",
        GE: "Georgia",
        GF: "French Guiana",
        GG: "Guernsey",
        GH: "Ghana",
        GI: "Gibraltar",
        GL: "Greenland",
        GM: "Gambia",
        GN: "Guinea",
        GP: "Guadeloupe",
        GQ: "Equatorial Guinea",
        GR: "Greece",
        GS: "South Georgia and the South Sandwich Islands",
        GT: "Guatemala",
        GU: "Guam",
        GW: "Guinea-Bissau",
        GY: "Guyana",
        HK: "Hong Kong SAR China",
        HM: "Heard Island and McDonald Islands",
        HN: "Honduras",
        HR: "Croatia",
        HT: "Haiti",
        HU: "Hungary",
        ID: "Indonesia",
        IE: "Ireland",
        IL: "Israel",
        IM: "Isle of Man",
        IN: "India",
        IO: "British Indian Ocean Territory",
        IQ: "Iraq",
        IR: "Iran",
        IS: "Iceland",
        IT: "Italy",
        JE: "Jersey",
        JM: "Jamaica",
        JO: "Jordan",
        JP: "Japan",
        JT: "Johnston Island",
        KE: "Kenya",
        KG: "Kyrgyzstan",
        KH: "Cambodia",
        KI: "Kiribati",
        KM: "Comoros",
        KN: "Saint Kitts and Nevis",
        KP: "North Korea",
        KR: "South Korea",
        KW: "Kuwait",
        KY: "Cayman Islands",
        KZ: "Kazakhstan",
        LA: "Laos",
        LB: "Lebanon",
        LC: "Saint Lucia",
        LI: "Liechtenstein",
        LK: "Sri Lanka",
        LR: "Liberia",
        LS: "Lesotho",
        LT: "Lithuania",
        LU: "Luxembourg",
        LV: "Latvia",
        LY: "Libya",
        MA: "Morocco",
        MC: "Monaco",
        MD: "Moldova",
        ME: "Montenegro",
        MF: "Saint Martin",
        MG: "Madagascar",
        MH: "Marshall Islands",
        MI: "Midway Islands",
        MK: "Macedonia",
        ML: "Mali",
        MM: "Myanmar [Burma]",
        MN: "Mongolia",
        MO: "Macau SAR China",
        MP: "Northern Mariana Islands",
        MQ: "Martinique",
        MR: "Mauritania",
        MS: "Montserrat",
        MT: "Malta",
        MU: "Mauritius",
        MV: "Maldives",
        MW: "Malawi",
        MX: "Mexico",
        MY: "Malaysia",
        MZ: "Mozambique",
        NA: "Namibia",
        NC: "New Caledonia",
        NE: "Niger",
        NF: "Norfolk Island",
        NG: "Nigeria",
        NI: "Nicaragua",
        NL: "Netherlands",
        NO: "Norway",
        NP: "Nepal",
        NQ: "Dronning Maud Land",
        NR: "Nauru",
        NT: "Neutral Zone",
        NU: "Niue",
        NZ: "New Zealand",
        OM: "Oman",
        PA: "Panama",
        PC: "Pacific Islands Trust Territory",
        PE: "Peru",
        PF: "French Polynesia",
        PG: "Papua New Guinea",
        PH: "Philippines",
        PK: "Pakistan",
        PL: "Poland",
        PM: "Saint Pierre and Miquelon",
        PN: "Pitcairn Islands",
        PR: "Puerto Rico",
        PS: "Palestinian Territories",
        PT: "Portugal",
        PU: "U.S. Miscellaneous Pacific Islands",
        PW: "Palau",
        PY: "Paraguay",
        PZ: "Panama Canal Zone",
        QA: "Qatar",
        RE: "Réunion",
        RO: "Romania",
        RS: "Serbia",
        RU: "Russia",
        RW: "Rwanda",
        SA: "Saudi Arabia",
        SB: "Solomon Islands",
        SC: "Seychelles",
        SD: "Sudan",
        SE: "Sweden",
        SG: "Singapore",
        SH: "Saint Helena",
        SI: "Slovenia",
        SJ: "Svalbard and Jan Mayen",
        SK: "Slovakia",
        SL: "Sierra Leone",
        SM: "San Marino",
        SN: "Senegal",
        SO: "Somalia",
        SR: "Suriname",
        ST: "São Tomé and Príncipe",
        SU: "Union of Soviet Socialist Republics",
        SV: "El Salvador",
        SY: "Syria",
        SZ: "Swaziland",
        TC: "Turks and Caicos Islands",
        TD: "Chad",
        TF: "French Southern Territories",
        TG: "Togo",
        TH: "Thailand",
        TJ: "Tajikistan",
        TK: "Tokelau",
        TL: "Timor-Leste",
        TM: "Turkmenistan",
        TN: "Tunisia",
        TO: "Tonga",
        TR: "Turkey",
        TT: "Trinidad and Tobago",
        TV: "Tuvalu",
        TW: "Taiwan",
        TZ: "Tanzania",
        UA: "Ukraine",
        UG: "Uganda",
        UM: "U.S. Minor Outlying Islands",
        US: "United States",
        UY: "Uruguay",
        UZ: "Uzbekistan",
        VA: "Vatican City",
        VC: "Saint Vincent and the Grenadines",
        VD: "North Vietnam",
        VE: "Venezuela",
        VG: "British Virgin Islands",
        VI: "U.S. Virgin Islands",
        VN: "Vietnam",
        VU: "Vanuatu",
        WF: "Wallis and Futuna",
        WK: "Wake Island",
        WS: "Samoa",
        YD: "People's Democratic Republic of Yemen",
        YE: "Yemen",
        YT: "Mayotte",
        ZA: "South Africa",
        ZM: "Zambia",
        ZW: "Zimbabwe",
        ZZ: "Unknown or Invalid Region",
    };

    var countriesArray = $.map(countries, function (value, key) {
        return {
            value: value,
            data: key,
        };
    });

    // initialize autocomplete with custom appendTo
    $("#autocomplete-custom-append").autocomplete({
        lookup: countriesArray,
    });
}

/* AUTOSIZE */

function init_autosize() {
    if (typeof $.fn.autosize !== "undefined") {
        autosize($(".resizable_textarea"));
    }
}

/* PARSLEY */

function init_parsley() {
    if (typeof parsley === "undefined") {
        return;
    }
    console.log("init_parsley");

    $(/*.listen*/ "parsley:field:validate", function () {
        validateFront();
    });
    $("#demo-form .btn").on("click", function () {
        $("#demo-form").parsley().validate();
        validateFront();
    });
    var validateFront = function () {
        if (true === $("#demo-form").parsley().isValid()) {
            $(".bs-callout-info").removeClass("hidden");
            $(".bs-callout-warning").addClass("hidden");
        } else {
            $(".bs-callout-info").addClass("hidden");
            $(".bs-callout-warning").removeClass("hidden");
        }
    };

    $(/*.listen*/ "parsley:field:validate", function () {
        validateFront();
    });
    $("#demo-form2 .btn").on("click", function () {
        $("#demo-form2").parsley().validate();
        validateFront();
    });
    var validateFront = function () {
        if (true === $("#demo-form2").parsley().isValid()) {
            $(".bs-callout-info").removeClass("hidden");
            $(".bs-callout-warning").addClass("hidden");
        } else {
            $(".bs-callout-info").addClass("hidden");
            $(".bs-callout-warning").removeClass("hidden");
        }
    };

    try {
        hljs.initHighlightingOnLoad();
    } catch (err) {}
}

/* INPUTS */

function onAddTag(tag) {
    alert("Added a tag: " + tag);
}

function onRemoveTag(tag) {
    alert("Removed a tag: " + tag);
}

function onChangeTag(input, tag) {
    alert("Changed a tag: " + tag);
}

//tags input
function init_TagsInput() {
    if (typeof $.fn.tagsInput !== "undefined") {
        $("#tags_1").tagsInput({
            width: "auto",
        });
    }
}

/* SELECT2 */

function init_select2() {
    if (typeof select2 === "undefined") {
        return;
    }
    console.log("init_toolbox");

    $(".select2_single").select2({
        placeholder: "Select a state",
        allowClear: true,
    });
    $(".select2_group").select2({});
    $(".select2_multiple").select2({
        maximumSelectionLength: 4,
        placeholder: "With Max Selection limit 4",
        allowClear: true,
    });
}

/* WYSIWYG EDITOR */

function init_wysiwyg() {
    if (typeof $.fn.wysiwyg === "undefined") {
        return;
    }
    console.log("init_wysiwyg");

    function init_ToolbarBootstrapBindings() {
        var fonts = [
                "Serif",
                "Sans",
                "Arial",
                "Arial Black",
                "Courier",
                "Courier New",
                "Comic Sans MS",
                "Helvetica",
                "Impact",
                "Lucida Grande",
                "Lucida Sans",
                "Tahoma",
                "Times",
                "Times New Roman",
                "Verdana",
            ],
            fontTarget = $("[title=Font]").siblings(".dropdown-menu");
        $.each(fonts, function (idx, fontName) {
            fontTarget.append(
                $(
                    '<li><a data-edit="fontName ' +
                    fontName +
                    '" style="font-family:\'' +
                    fontName +
                    "'\">" +
                    fontName +
                    "</a></li>"
                )
            );
        });
        $("a[title]").tooltip({
            container: "body",
        });
        $(".dropdown-menu input")
            .click(function () {
                return false;
            })
            .change(function () {
                $(this).parent(".dropdown-menu").siblings(".dropdown-toggle").dropdown("toggle");
            })
            .keydown("esc", function () {
                this.value = "";
                $(this).change();
            });

        $("[data-role=magic-overlay]").each(function () {
            var overlay = $(this),
                target = $(overlay.data("target"));
            overlay
                .css("opacity", 0)
                .css("position", "absolute")
                .offset(target.offset())
                .width(target.outerWidth())
                .height(target.outerHeight());
        });

        if ("onwebkitspeechchange" in document.createElement("input")) {
            var editorOffset = $("#editor").offset();

            $(".voiceBtn")
                .css("position", "absolute")
                .offset({
                    top: editorOffset.top,
                    left: editorOffset.left + $("#editor").innerWidth() - 35,
                });
        } else {
            $(".voiceBtn").hide();
        }
    }

    function showErrorAlert(reason, detail) {
        var msg = "";
        if (reason === "unsupported-file-type") {
            msg = "Unsupported format " + detail;
        } else {
            console.log("error uploading file", reason, detail);
        }
        $(
            '<div class="alert"> <button type="button" class="close" data-dismiss="alert">&times;</button>' +
            "<strong>File upload error</strong> " +
            msg +
            " </div>"
        ).prependTo("#alerts");
    }

    $(".editor-wrapper").each(function () {
        var id = $(this).attr("id"); //editor-one

        $(this).wysiwyg({
            toolbarSelector: '[data-target="#' + id + '"]',
            fileUploadError: showErrorAlert,
        });
    });

    window.prettyPrint;
    prettyPrint();
}

/* CROPPER */

function init_cropper() {
    if (typeof $.fn.cropper === "undefined") {
        return;
    }
    console.log("init_cropper");

    var $image = $("#image");
    var $download = $("#download");
    var $dataX = $("#dataX");
    var $dataY = $("#dataY");
    var $dataHeight = $("#dataHeight");
    var $dataWidth = $("#dataWidth");
    var $dataRotate = $("#dataRotate");
    var $dataScaleX = $("#dataScaleX");
    var $dataScaleY = $("#dataScaleY");
    var options = {
        aspectRatio: 16 / 9,
        preview: ".img-preview",
        crop: function (e) {
            $dataX.val(Math.round(e.x));
            $dataY.val(Math.round(e.y));
            $dataHeight.val(Math.round(e.height));
            $dataWidth.val(Math.round(e.width));
            $dataRotate.val(e.rotate);
            $dataScaleX.val(e.scaleX);
            $dataScaleY.val(e.scaleY);
        },
    };

    // Tooltip
    $('[data-toggle="tooltip"]').tooltip();

    // Cropper
    $image
        .on({
            "build.cropper": function (e) {
                console.log(e.type);
            },
            "built.cropper": function (e) {
                console.log(e.type);
            },
            "cropstart.cropper": function (e) {
                console.log(e.type, e.action);
            },
            "cropmove.cropper": function (e) {
                console.log(e.type, e.action);
            },
            "cropend.cropper": function (e) {
                console.log(e.type, e.action);
            },
            "crop.cropper": function (e) {
                console.log(e.type, e.x, e.y, e.width, e.height, e.rotate, e.scaleX, e.scaleY);
            },
            "zoom.cropper": function (e) {
                console.log(e.type, e.ratio);
            },
        })
        .cropper(options);

    // Buttons
    if (!$.isFunction(document.createElement("canvas").getContext)) {
        $('button[data-method="getCroppedCanvas"]').prop("disabled", true);
    }

    if (typeof document.createElement("cropper").style.transition === "undefined") {
        $('button[data-method="rotate"]').prop("disabled", true);
        $('button[data-method="scale"]').prop("disabled", true);
    }

    // Download
    if (typeof $download[0].download === "undefined") {
        $download.addClass("disabled");
    }

    // Options
    $(".docs-toggles").on("change", "input", function () {
        var $this = $(this);
        var name = $this.attr("name");
        var type = $this.prop("type");
        var cropBoxData;
        var canvasData;

        if (!$image.data("cropper")) {
            return;
        }

        if (type === "checkbox") {
            options[name] = $this.prop("checked");
            cropBoxData = $image.cropper("getCropBoxData");
            canvasData = $image.cropper("getCanvasData");

            options.built = function () {
                $image.cropper("setCropBoxData", cropBoxData);
                $image.cropper("setCanvasData", canvasData);
            };
        } else if (type === "radio") {
            options[name] = $this.val();
        }

        $image.cropper("destroy").cropper(options);
    });

    // Methods
    $(".docs-buttons").on("click", "[data-method]", function () {
        var $this = $(this);
        var data = $this.data();
        var $target;
        var result;

        if ($this.prop("disabled") || $this.hasClass("disabled")) {
            return;
        }

        if ($image.data("cropper") && data.method) {
            data = $.extend({}, data); // Clone a new one

            if (typeof data.target !== "undefined") {
                $target = $(data.target);

                if (typeof data.option === "undefined") {
                    try {
                        data.option = JSON.parse($target.val());
                    } catch (e) {
                        console.log(e.message);
                    }
                }
            }

            result = $image.cropper(data.method, data.option, data.secondOption);

            switch (data.method) {
                case "scaleX":
                case "scaleY":
                    $(this).data("option", -data.option);
                    break;

                case "getCroppedCanvas":
                    if (result) {
                        // Bootstrap's Modal
                        $("#getCroppedCanvasModal").modal().find(".modal-body").html(result);

                        if (!$download.hasClass("disabled")) {
                            $download.attr("href", result.toDataURL());
                        }
                    }

                    break;
            }

            if ($.isPlainObject(result) && $target) {
                try {
                    $target.val(JSON.stringify(result));
                } catch (e) {
                    console.log(e.message);
                }
            }
        }
    });

    // Keyboard
    $(document.body).on("keydown", function (e) {
        if (!$image.data("cropper") || this.scrollTop > 300) {
            return;
        }

        switch (e.which) {
            case 37:
                e.preventDefault();
                $image.cropper("move", -1, 0);
                break;

            case 38:
                e.preventDefault();
                $image.cropper("move", 0, -1);
                break;

            case 39:
                e.preventDefault();
                $image.cropper("move", 1, 0);
                break;

            case 40:
                e.preventDefault();
                $image.cropper("move", 0, 1);
                break;
        }
    });

    // Import image
    var $inputImage = $("#inputImage");
    var URL = window.URL || window.webkitURL;
    var blobURL;

    if (URL) {
        $inputImage.change(function () {
            var files = this.files;
            var file;

            if (!$image.data("cropper")) {
                return;
            }

            if (files && files.length) {
                file = files[0];

                if (/^image\/\w+$/.test(file.type)) {
                    blobURL = URL.createObjectURL(file);
                    $image
                        .one("built.cropper", function () {
                            // Revoke when load complete
                            URL.revokeObjectURL(blobURL);
                        })
                        .cropper("reset")
                        .cropper("replace", blobURL);
                    $inputImage.val("");
                } else {
                    window.alert("Please choose an image file.");
                }
            }
        });
    } else {
        $inputImage.prop("disabled", true).parent().addClass("disabled");
    }
}

/* CROPPER --- end */

/* KNOB */

function init_knob() {
    if (typeof $.fn.knob === "undefined") {
        return;
    }
    console.log("init_knob");

    $(".knob").knob({
        change: function (value) {
            //console.log("change : " + value);
        },
        release: function (value) {
            //console.log(this.$.attr('value'));
            console.log("release : " + value);
        },
        cancel: function () {
            console.log("cancel : ", this);
        },
        /*format : function (value) {
         return value + '%';
         },*/
        draw: function () {
            // "tron" case
            if (this.$.data("skin") == "tron") {
                this.cursorExt = 0.3;

                var a = this.arc(this.cv), // Arc
                    pa, // Previous arc
                    r = 1;

                this.g.lineWidth = this.lineWidth;

                if (this.o.displayPrevious) {
                    pa = this.arc(this.v);
                    this.g.beginPath();
                    this.g.strokeStyle = this.pColor;
                    this.g.arc(this.xy, this.xy, this.radius - this.lineWidth, pa.s, pa.e, pa.d);
                    this.g.stroke();
                }

                this.g.beginPath();
                this.g.strokeStyle = r ? this.o.fgColor : this.fgColor;
                this.g.arc(this.xy, this.xy, this.radius - this.lineWidth, a.s, a.e, a.d);
                this.g.stroke();

                this.g.lineWidth = 2;
                this.g.beginPath();
                this.g.strokeStyle = this.o.fgColor;
                this.g.arc(
                    this.xy,
                    this.xy,
                    this.radius - this.lineWidth + 1 + (this.lineWidth * 2) / 3,
                    0,
                    2 * Math.PI,
                    false
                );
                this.g.stroke();

                return false;
            }
        },
    });

    // Example of infinite knob, iPod click wheel
    var v,
        up = 0,
        down = 0,
        i = 0,
        $idir = $("div.idir"),
        $ival = $("div.ival"),
        incr = function () {
            i++;
            $idir.show().html("+").fadeOut();
            $ival.html(i);
        },
        decr = function () {
            i--;
            $idir.show().html("-").fadeOut();
            $ival.html(i);
        };
    $("input.infinite").knob({
        min: 0,
        max: 20,
        stopper: false,
        change: function () {
            if (v > this.cv) {
                if (up) {
                    decr();
                    up = 0;
                } else {
                    up = 1;
                    down = 0;
                }
            } else {
                if (v < this.cv) {
                    if (down) {
                        incr();
                        down = 0;
                    } else {
                        down = 1;
                        up = 0;
                    }
                }
            }
            v = this.cv;
        },
    });
}

/* INPUT MASK */

function init_InputMask() {
    if (typeof $.fn.inputmask === "undefined") {
        return;
    }
    console.log("init_InputMask");

    $(":input").inputmask();
}

/* COLOR PICKER */

function init_ColorPicker() {
    if (typeof $.fn.colorpicker === "undefined") {
        return;
    }
    console.log("init_ColorPicker");

    $(".demo1").colorpicker();
    $(".demo2").colorpicker();

    $("#demo_forceformat").colorpicker({
        format: "rgba",
        horizontal: true,
    });

    $("#demo_forceformat3").colorpicker({
        format: "rgba",
    });

    $(".demo-auto").colorpicker();
}

/* ION RANGE SLIDER */

function init_IonRangeSlider() {
    if (typeof $.fn.ionRangeSlider === "undefined") {
        return;
    }
    console.log("init_IonRangeSlider");

    $("#range_27").ionRangeSlider({
        type: "double",
        min: 1000000,
        max: 2000000,
        grid: true,
        force_edges: true,
    });
    $("#range").ionRangeSlider({
        hide_min_max: true,
        keyboard: true,
        min: 0,
        max: 5000,
        from: 1000,
        to: 4000,
        type: "double",
        step: 1,
        prefix: "$",
        grid: true,
    });
    $("#range_25").ionRangeSlider({
        type: "double",
        min: 1000000,
        max: 2000000,
        grid: true,
    });
    $("#range_26").ionRangeSlider({
        type: "double",
        min: 0,
        max: 10000,
        step: 500,
        grid: true,
        grid_snap: true,
    });
    $("#range_31").ionRangeSlider({
        type: "double",
        min: 0,
        max: 100,
        from: 30,
        to: 70,
        from_fixed: true,
    });
    $(".range_min_max").ionRangeSlider({
        type: "double",
        min: 0,
        max: 100,
        from: 30,
        to: 70,
        max_interval: 50,
    });
    $(".range_time24").ionRangeSlider({
        min: +moment().subtract(12, "hours").format("X"),
        max: +moment().format("X"),
        from: +moment().subtract(6, "hours").format("X"),
        grid: true,
        force_edges: true,
        prettify: function (num) {
            var m = moment(num, "X");
            return m.format("Do MMMM, HH:mm");
        },
    });
}

/* DATERANGEPICKER */

function init_daterangepicker() {
    if (typeof $.fn.daterangepicker === "undefined") {
        return;
    }
    console.log("init_daterangepicker");

    var cb = function (start, end, label) {
        console.log(start.toISOString(), end.toISOString(), label);
        $("#reportrange span").html(start.format("MMMM D, YYYY") + " - " + end.format("MMMM D, YYYY"));
    };

    var optionSet1 = {
        startDate: moment().subtract(29, "days"),
        endDate: moment(),
        minDate: "01/01/2012",
        maxDate: "12/31/2015",
        dateLimit: {
            days: 60,
        },
        showDropdowns: true,
        showWeekNumbers: true,
        timePicker: false,
        timePickerIncrement: 1,
        timePicker12Hour: true,
        ranges: {
            Today: [moment(), moment()],
            Yesterday: [moment().subtract(1, "days"), moment().subtract(1, "days")],
            "Last 7 Days": [moment().subtract(6, "days"), moment()],
            "Last 30 Days": [moment().subtract(29, "days"), moment()],
            "This Month": [moment().startOf("month"), moment().endOf("month")],
            "Last Month": [
                moment().subtract(1, "month").startOf("month"),
                moment().subtract(1, "month").endOf("month"),
            ],
        },
        opens: "left",
        buttonClasses: ["btn btn-default"],
        applyClass: "btn-small btn-primary",
        cancelClass: "btn-small",
        format: "MM/DD/YYYY",
        separator: " to ",
        locale: {
            applyLabel: "Submit",
            cancelLabel: "Clear",
            fromLabel: "From",
            toLabel: "To",
            customRangeLabel: "Custom",
            daysOfWeek: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
            monthNames: [
                "January",
                "February",
                "March",
                "April",
                "May",
                "June",
                "July",
                "August",
                "September",
                "October",
                "November",
                "December",
            ],
            firstDay: 1,
        },
    };

    $("#reportrange span").html(
        moment().subtract(29, "days").format("MMMM D, YYYY") + " - " + moment().format("MMMM D, YYYY")
    );
    $("#reportrange").daterangepicker(optionSet1, cb);
    $("#reportrange").on("show.daterangepicker", function () {
        console.log("show event fired");
    });
    $("#reportrange").on("hide.daterangepicker", function () {
        console.log("hide event fired");
    });
    $("#reportrange").on("apply.daterangepicker", function (ev, picker) {
        console.log(
            "apply event fired, start/end dates are " +
            picker.startDate.format("MMMM D, YYYY") +
            " to " +
            picker.endDate.format("MMMM D, YYYY")
        );
    });
    $("#reportrange").on("cancel.daterangepicker", function (ev, picker) {
        console.log("cancel event fired");
    });
    $("#options1").click(function () {
        $("#reportrange").data("daterangepicker").setOptions(optionSet1, cb);
    });
    $("#options2").click(function () {
        $("#reportrange").data("daterangepicker").setOptions(optionSet2, cb);
    });
    $("#destroy").click(function () {
        $("#reportrange").data("daterangepicker").remove();
    });
}

function init_daterangepicker_right() {
    if (typeof $.fn.daterangepicker === "undefined") {
        return;
    }
    console.log("init_daterangepicker_right");

    var cb = function (start, end, label) {
        console.log(start.toISOString(), end.toISOString(), label);
        $("#reportrange_right span").html(start.format("MMMM D, YYYY") + " - " + end.format("MMMM D, YYYY"));
    };

    var optionSet1 = {
        startDate: moment().subtract(29, "days"),
        endDate: moment(),
        minDate: "01/01/2012",
        maxDate: "12/31/2020",
        dateLimit: {
            days: 60,
        },
        showDropdowns: true,
        showWeekNumbers: true,
        timePicker: false,
        timePickerIncrement: 1,
        timePicker12Hour: true,
        ranges: {
            Today: [moment(), moment()],
            Yesterday: [moment().subtract(1, "days"), moment().subtract(1, "days")],
            "Last 7 Days": [moment().subtract(6, "days"), moment()],
            "Last 30 Days": [moment().subtract(29, "days"), moment()],
            "This Month": [moment().startOf("month"), moment().endOf("month")],
            "Last Month": [
                moment().subtract(1, "month").startOf("month"),
                moment().subtract(1, "month").endOf("month"),
            ],
        },
        opens: "right",
        buttonClasses: ["btn btn-default"],
        applyClass: "btn-small btn-primary",
        cancelClass: "btn-small",
        format: "MM/DD/YYYY",
        separator: " to ",
        locale: {
            applyLabel: "Submit",
            cancelLabel: "Clear",
            fromLabel: "From",
            toLabel: "To",
            customRangeLabel: "Custom",
            daysOfWeek: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
            monthNames: [
                "January",
                "February",
                "March",
                "April",
                "May",
                "June",
                "July",
                "August",
                "September",
                "October",
                "November",
                "December",
            ],
            firstDay: 1,
        },
    };

    $("#reportrange_right span").html(
        moment().subtract(29, "days").format("MMMM D, YYYY") + " - " + moment().format("MMMM D, YYYY")
    );

    $("#reportrange_right").daterangepicker(optionSet1, cb);

    $("#reportrange_right").on("show.daterangepicker", function () {
        console.log("show event fired");
    });
    $("#reportrange_right").on("hide.daterangepicker", function () {
        console.log("hide event fired");
    });
    $("#reportrange_right").on("apply.daterangepicker", function (ev, picker) {
        console.log(
            "apply event fired, start/end dates are " +
            picker.startDate.format("MMMM D, YYYY") +
            " to " +
            picker.endDate.format("MMMM D, YYYY")
        );
    });
    $("#reportrange_right").on("cancel.daterangepicker", function (ev, picker) {
        console.log("cancel event fired");
    });

    $("#options1").click(function () {
        $("#reportrange_right").data("daterangepicker").setOptions(optionSet1, cb);
    });

    $("#options2").click(function () {
        $("#reportrange_right").data("daterangepicker").setOptions(optionSet2, cb);
    });

    $("#destroy").click(function () {
        $("#reportrange_right").data("daterangepicker").remove();
    });
}

function init_daterangepicker_single_call() {
    if (typeof $.fn.daterangepicker === "undefined") {
        return;
    }
    console.log("init_daterangepicker_single_call");

    $("#single_cal1").daterangepicker(
        {
            singleDatePicker: true,
            singleClasses: "picker_1",
        },
        function (start, end, label) {
            console.log(start.toISOString(), end.toISOString(), label);
        }
    );
    $("#single_cal2").daterangepicker(
        {
            singleDatePicker: true,
            singleClasses: "picker_2",
        },
        function (start, end, label) {
            console.log(start.toISOString(), end.toISOString(), label);
        }
    );
    $("#single_cal3").daterangepicker(
        {
            singleDatePicker: true,
            singleClasses: "picker_3",
        },
        function (start, end, label) {
            console.log(start.toISOString(), end.toISOString(), label);
        }
    );
    $("#single_cal4").daterangepicker(
        {
            singleDatePicker: true,
            singleClasses: "picker_4",
        },
        function (start, end, label) {
            console.log(start.toISOString(), end.toISOString(), label);
        }
    );
}

function init_daterangepicker_reservation() {
    if (typeof $.fn.daterangepicker === "undefined") {
        return;
    }
    console.log("init_daterangepicker_reservation");

    $("#reservation").daterangepicker(null, function (start, end, label) {
        console.log(start.toISOString(), end.toISOString(), label);
    });

    $("#reservation-time").daterangepicker({
        timePicker: true,
        timePickerIncrement: 30,
        locale: {
            format: "MM/DD/YYYY h:mm A",
        },
    });
}

/* SMART WIZARD */

function init_SmartWizard() {
    if (typeof $.fn.smartWizard === "undefined") {
        return;
    }
    console.log("init_SmartWizard");

    $("#wizard").smartWizard();

    $("#wizard_verticle").smartWizard({
        transitionEffect: "slide",
    });

    $(".buttonNext").addClass("btn btn-success");
    $(".buttonPrevious").addClass("btn btn-primary");
    $(".buttonFinish").addClass("btn btn-default");
}

/* VALIDATOR */

function init_validator() {
    if (typeof validator === "undefined") {
        return;
    }
    console.log("init_validator");

    // initialize the validator function
    validator.message.date = "not a real date";

    // validate a field on "blur" event, a 'select' on 'change' event & a '.reuired' classed multifield on 'keyup':
    $("form")
        .on("blur", "input[required], input.optional, select.required", validator.checkField)
        .on("change", "select.required", validator.checkField)
        .on("keypress", "input[required][pattern]", validator.keypress);

    $(".multi.required").on("keyup blur", "input", function () {
        validator.checkField.apply($(this).siblings().last()[0]);
    });

    $("form").submit(function (e) {
        e.preventDefault();
        var submit = true;

        // evaluate the form using generic validaing
        if (!validator.checkAll($(this))) {
            submit = false;
        }

        if (submit) this.submit();

        return false;
    });
}

/* PNotify */

function init_PNotify() {
    if (typeof PNotify === "undefined") {
        return;
    }
    console.log("init_PNotify");
}

/* CUSTOM NOTIFICATION */

function init_CustomNotification() {
    console.log("run_customtabs");

    if (typeof CustomTabs === "undefined") {
        return;
    }
    console.log("init_CustomTabs");

    var cnt = 10;

    TabbedNotification = function (options) {
        var message =
            "<div id='ntf" +
            cnt +
            "' class='text alert-" +
            options.type +
            "' style='display:none'><h2><i class='fa fa-bell'></i> " +
            options.title +
            "</h2><div class='close'><a href='javascript:;' class='notification_close'><i class='fa fa-close'></i></a></div><p>" +
            options.text +
            "</p></div>";

        if (!document.getElementById("custom_notifications")) {
            alert("doesnt exists");
        } else {
            $("#custom_notifications ul.notifications").append(
                "<li><a id='ntlink" +
                cnt +
                "' class='alert-" +
                options.type +
                "' href='#ntf" +
                cnt +
                "'><i class='fa fa-bell animated shake'></i></a></li>"
            );
            $("#custom_notifications #notif-group").append(message);
            cnt++;
            CustomTabs(options);
        }
    };

    CustomTabs = function (options) {
        $(".tabbed_notifications > div").hide();
        $(".tabbed_notifications > div:first-of-type").show();
        $("#custom_notifications").removeClass("dsp_none");
        $(".notifications a").click(function (e) {
            e.preventDefault();
            var $this = $(this),
                tabbed_notifications = "#" + $this.parents(".notifications").data("tabbed_notifications"),
                others = $this.closest("li").siblings().children("a"),
                target = $this.attr("href");
            others.removeClass("active");
            $this.addClass("active");
            $(tabbed_notifications).children("div").hide();
            $(target).show();
        });
    };

    CustomTabs();

    var tabid = (idname = "");

    $(document).on("click", ".notification_close", function (e) {
        idname = $(this).parent().parent().attr("id");
        tabid = idname.substr(-2);
        $("#ntf" + tabid).remove();
        $("#ntlink" + tabid)
            .parent()
            .remove();
        $(".notifications a").first().addClass("active");
        $("#notif-group div").first().css("display", "block");
    });
}

/* EASYPIECHART */

function init_EasyPieChart() {
    if (typeof $.fn.easyPieChart === "undefined") {
        return;
    }
    console.log("init_EasyPieChart");

    $(".chart").easyPieChart({
        easing: "easeOutElastic",
        delay: 3000,
        barColor: "#26B99A",
        trackColor: "#fff",
        scaleColor: false,
        lineWidth: 20,
        trackWidth: 16,
        lineCap: "butt",
        onStep: function (from, to, percent) {
            $(this.el).find(".percent").text(Math.round(percent));
        },
    });
    var chart = (window.chart = $(".chart").data("easyPieChart"));
    $(".js_update").on("click", function () {
        chart.update(Math.random() * 200 - 100);
    });

    //hover and retain popover when on popover content
    var originalLeave = $.fn.popover.Constructor.prototype.leave;
    $.fn.popover.Constructor.prototype.leave = function (obj) {
        var self =
            obj instanceof this.constructor
                ? obj
                : $(obj.currentTarget)
                    [this.type](this.getDelegateOptions())
                    .data("bs." + this.type);
        var container, timeout;

        originalLeave.call(this, obj);

        if (obj.currentTarget) {
            container = $(obj.currentTarget).siblings(".popover");
            timeout = self.timeout;
            container.one("mouseenter", function () {
                //We entered the actual popover – call off the dogs
                clearTimeout(timeout);
                //Let's monitor popover content instead
                container.one("mouseleave", function () {
                    $.fn.popover.Constructor.prototype.leave.call(self, self);
                });
            });
        }
    };

    $("body").popover({
        selector: "[data-popover]",
        trigger: "click hover",
        delay: {
            show: 50,
            hide: 400,
        },
    });
}

function init_charts() {
    console.log("run_charts  typeof [" + typeof Chart + "]");

    if (typeof Chart === "undefined") {
        return;
    }

    console.log("init_charts");

    Chart.defaults.global.legend = {
        enabled: false,
    };

    if ($("#canvas_line").length) {
        var canvas_line_00 = new Chart(document.getElementById("canvas_line"), {
            type: "line",
            data: {
                labels: ["January", "February", "March", "April", "May", "June", "July"],
                datasets: [
                    {
                        label: "My First dataset",
                        backgroundColor: "rgba(38, 185, 154, 0.31)",
                        borderColor: "rgba(38, 185, 154, 0.7)",
                        pointBorderColor: "rgba(38, 185, 154, 0.7)",
                        pointBackgroundColor: "rgba(38, 185, 154, 0.7)",
                        pointHoverBackgroundColor: "#fff",
                        pointHoverBorderColor: "rgba(220,220,220,1)",
                        pointBorderWidth: 1,
                        data: [31, 74, 6, 39, 20, 85, 7],
                    },
                    {
                        label: "My Second dataset",
                        backgroundColor: "rgba(3, 88, 106, 0.3)",
                        borderColor: "rgba(3, 88, 106, 0.70)",
                        pointBorderColor: "rgba(3, 88, 106, 0.70)",
                        pointBackgroundColor: "rgba(3, 88, 106, 0.70)",
                        pointHoverBackgroundColor: "#fff",
                        pointHoverBorderColor: "rgba(151,187,205,1)",
                        pointBorderWidth: 1,
                        data: [82, 23, 66, 9, 99, 4, 2],
                    },
                ],
            },
        });
    }

    if ($("#canvas_line1").length) {
        var canvas_line_01 = new Chart(document.getElementById("canvas_line1"), {
            type: "line",
            data: {
                labels: ["January", "February", "March", "April", "May", "June", "July"],
                datasets: [
                    {
                        label: "My First dataset",
                        backgroundColor: "rgba(38, 185, 154, 0.31)",
                        borderColor: "rgba(38, 185, 154, 0.7)",
                        pointBorderColor: "rgba(38, 185, 154, 0.7)",
                        pointBackgroundColor: "rgba(38, 185, 154, 0.7)",
                        pointHoverBackgroundColor: "#fff",
                        pointHoverBorderColor: "rgba(220,220,220,1)",
                        pointBorderWidth: 1,
                        data: [31, 74, 6, 39, 20, 85, 7],
                    },
                    {
                        label: "My Second dataset",
                        backgroundColor: "rgba(3, 88, 106, 0.3)",
                        borderColor: "rgba(3, 88, 106, 0.70)",
                        pointBorderColor: "rgba(3, 88, 106, 0.70)",
                        pointBackgroundColor: "rgba(3, 88, 106, 0.70)",
                        pointHoverBackgroundColor: "#fff",
                        pointHoverBorderColor: "rgba(151,187,205,1)",
                        pointBorderWidth: 1,
                        data: [82, 23, 66, 9, 99, 4, 2],
                    },
                ],
            },
        });
    }

    if ($("#canvas_line2").length) {
        var canvas_line_02 = new Chart(document.getElementById("canvas_line2"), {
            type: "line",
            data: {
                labels: ["January", "February", "March", "April", "May", "June", "July"],
                datasets: [
                    {
                        label: "My First dataset",
                        backgroundColor: "rgba(38, 185, 154, 0.31)",
                        borderColor: "rgba(38, 185, 154, 0.7)",
                        pointBorderColor: "rgba(38, 185, 154, 0.7)",
                        pointBackgroundColor: "rgba(38, 185, 154, 0.7)",
                        pointHoverBackgroundColor: "#fff",
                        pointHoverBorderColor: "rgba(220,220,220,1)",
                        pointBorderWidth: 1,
                        data: [31, 74, 6, 39, 20, 85, 7],
                    },
                    {
                        label: "My Second dataset",
                        backgroundColor: "rgba(3, 88, 106, 0.3)",
                        borderColor: "rgba(3, 88, 106, 0.70)",
                        pointBorderColor: "rgba(3, 88, 106, 0.70)",
                        pointBackgroundColor: "rgba(3, 88, 106, 0.70)",
                        pointHoverBackgroundColor: "#fff",
                        pointHoverBorderColor: "rgba(151,187,205,1)",
                        pointBorderWidth: 1,
                        data: [82, 23, 66, 9, 99, 4, 2],
                    },
                ],
            },
        });
    }

    if ($("#canvas_line3").length) {
        var canvas_line_03 = new Chart(document.getElementById("canvas_line3"), {
            type: "line",
            data: {
                labels: ["January", "February", "March", "April", "May", "June", "July"],
                datasets: [
                    {
                        label: "My First dataset",
                        backgroundColor: "rgba(38, 185, 154, 0.31)",
                        borderColor: "rgba(38, 185, 154, 0.7)",
                        pointBorderColor: "rgba(38, 185, 154, 0.7)",
                        pointBackgroundColor: "rgba(38, 185, 154, 0.7)",
                        pointHoverBackgroundColor: "#fff",
                        pointHoverBorderColor: "rgba(220,220,220,1)",
                        pointBorderWidth: 1,
                        data: [31, 74, 6, 39, 20, 85, 7],
                    },
                    {
                        label: "My Second dataset",
                        backgroundColor: "rgba(3, 88, 106, 0.3)",
                        borderColor: "rgba(3, 88, 106, 0.70)",
                        pointBorderColor: "rgba(3, 88, 106, 0.70)",
                        pointBackgroundColor: "rgba(3, 88, 106, 0.70)",
                        pointHoverBackgroundColor: "#fff",
                        pointHoverBorderColor: "rgba(151,187,205,1)",
                        pointBorderWidth: 1,
                        data: [82, 23, 66, 9, 99, 4, 2],
                    },
                ],
            },
        });
    }

    if ($("#canvas_line4").length) {
        var canvas_line_04 = new Chart(document.getElementById("canvas_line4"), {
            type: "line",
            data: {
                labels: ["January", "February", "March", "April", "May", "June", "July"],
                datasets: [
                    {
                        label: "My First dataset",
                        backgroundColor: "rgba(38, 185, 154, 0.31)",
                        borderColor: "rgba(38, 185, 154, 0.7)",
                        pointBorderColor: "rgba(38, 185, 154, 0.7)",
                        pointBackgroundColor: "rgba(38, 185, 154, 0.7)",
                        pointHoverBackgroundColor: "#fff",
                        pointHoverBorderColor: "rgba(220,220,220,1)",
                        pointBorderWidth: 1,
                        data: [31, 74, 6, 39, 20, 85, 7],
                    },
                    {
                        label: "My Second dataset",
                        backgroundColor: "rgba(3, 88, 106, 0.3)",
                        borderColor: "rgba(3, 88, 106, 0.70)",
                        pointBorderColor: "rgba(3, 88, 106, 0.70)",
                        pointBackgroundColor: "rgba(3, 88, 106, 0.70)",
                        pointHoverBackgroundColor: "#fff",
                        pointHoverBorderColor: "rgba(151,187,205,1)",
                        pointBorderWidth: 1,
                        data: [82, 23, 66, 9, 99, 4, 2],
                    },
                ],
            },
        });
    }

    // Line chart

    if ($("#lineChart").length) {
        var ctx = document.getElementById("lineChart");
        var lineChart = new Chart(ctx, {
            type: "line",
            data: {
                labels: ["January", "February", "March", "April", "May", "June", "July"],
                datasets: [
                    {
                        label: "My First dataset",
                        backgroundColor: "rgba(38, 185, 154, 0.31)",
                        borderColor: "rgba(38, 185, 154, 0.7)",
                        pointBorderColor: "rgba(38, 185, 154, 0.7)",
                        pointBackgroundColor: "rgba(38, 185, 154, 0.7)",
                        pointHoverBackgroundColor: "#fff",
                        pointHoverBorderColor: "rgba(220,220,220,1)",
                        pointBorderWidth: 1,
                        data: [31, 74, 6, 39, 20, 85, 7],
                    },
                    {
                        label: "My Second dataset",
                        backgroundColor: "rgba(3, 88, 106, 0.3)",
                        borderColor: "rgba(3, 88, 106, 0.70)",
                        pointBorderColor: "rgba(3, 88, 106, 0.70)",
                        pointBackgroundColor: "rgba(3, 88, 106, 0.70)",
                        pointHoverBackgroundColor: "#fff",
                        pointHoverBorderColor: "rgba(151,187,205,1)",
                        pointBorderWidth: 1,
                        data: [82, 23, 66, 9, 99, 4, 2],
                    },
                ],
            },
        });
    }

    // Bar chart

    if ($("#mybarChart").length) {
        var ctx = document.getElementById("mybarChart");
        var mybarChart = new Chart(ctx, {
            type: "bar",
            data: {
                labels: ["January", "February", "March", "April", "May", "June", "July"],
                datasets: [
                    {
                        label: "# of Votes",
                        backgroundColor: "#26B99A",
                        data: [51, 30, 40, 28, 92, 50, 45],
                    },
                    {
                        label: "# of Votes",
                        backgroundColor: "#03586A",
                        data: [41, 56, 25, 48, 72, 34, 12],
                    },
                ],
            },

            options: {
                scales: {
                    yAxes: [
                        {
                            ticks: {
                                beginAtZero: true,
                            },
                        },
                    ],
                },
            },
        });
    }

    // Doughnut chart

    if ($("#canvasDoughnut").length) {
        var ctx = document.getElementById("canvasDoughnut");
        var data = {
            labels: ["Dark Grey", "Purple Color", "Gray Color", "Green Color", "Blue Color"],
            datasets: [
                {
                    data: [120, 50, 140, 180, 100],
                    backgroundColor: ["#455C73", "#9B59B6", "#BDC3C7", "#26B99A", "#3498DB"],
                    hoverBackgroundColor: ["#34495E", "#B370CF", "#CFD4D8", "#36CAAB", "#49A9EA"],
                },
            ],
        };

        var canvasDoughnut = new Chart(ctx, {
            type: "doughnut",
            tooltipFillColor: "rgba(51, 51, 51, 0.55)",
            data: data,
        });
    }

    // Radar chart

    if ($("#canvasRadar").length) {
        var ctx = document.getElementById("canvasRadar");
        var data = {
            labels: ["Eating", "Drinking", "Sleeping", "Designing", "Coding", "Cycling", "Running"],
            datasets: [
                {
                    label: "My First dataset",
                    backgroundColor: "rgba(3, 88, 106, 0.2)",
                    borderColor: "rgba(3, 88, 106, 0.80)",
                    pointBorderColor: "rgba(3, 88, 106, 0.80)",
                    pointBackgroundColor: "rgba(3, 88, 106, 0.80)",
                    pointHoverBackgroundColor: "#fff",
                    pointHoverBorderColor: "rgba(220,220,220,1)",
                    data: [65, 59, 90, 81, 56, 55, 40],
                },
                {
                    label: "My Second dataset",
                    backgroundColor: "rgba(38, 185, 154, 0.2)",
                    borderColor: "rgba(38, 185, 154, 0.85)",
                    pointColor: "rgba(38, 185, 154, 0.85)",
                    pointStrokeColor: "#fff",
                    pointHighlightFill: "#fff",
                    pointHighlightStroke: "rgba(151,187,205,1)",
                    data: [28, 48, 40, 19, 96, 27, 100],
                },
            ],
        };

        var canvasRadar = new Chart(ctx, {
            type: "radar",
            data: data,
        });
    }

    // Pie chart
    if ($("#pieChart").length) {
        var ctx = document.getElementById("pieChart");
        var data = {
            datasets: [
                {
                    data: [120, 50, 140, 180, 100],
                    backgroundColor: ["#455C73", "#9B59B6", "#BDC3C7", "#26B99A", "#3498DB"],
                    label: "My dataset", // for legend
                },
            ],
            labels: ["Dark Gray", "Purple", "Gray", "Green", "Blue"],
        };

        var pieChart = new Chart(ctx, {
            data: data,
            type: "pie",
            otpions: {
                legend: false,
            },
        });
    }

    // PolarArea chart

    if ($("#polarArea").length) {
        var ctx = document.getElementById("polarArea");
        var data = {
            datasets: [
                {
                    data: [120, 50, 140, 180, 100],
                    backgroundColor: ["#455C73", "#9B59B6", "#BDC3C7", "#26B99A", "#3498DB"],
                    label: "My dataset",
                },
            ],
            labels: ["Dark Gray", "Purple", "Gray", "Green", "Blue"],
        };

        var polarArea = new Chart(ctx, {
            data: data,
            type: "polarArea",
            options: {
                scale: {
                    ticks: {
                        beginAtZero: true,
                    },
                },
            },
        });
    }
}

/* COMPOSE */

function init_compose() {
    if (typeof $.fn.slideToggle === "undefined") {
        return;
    }
    console.log("init_compose");

    $("#compose, .compose-close").click(function () {
        $(".compose").slideToggle();
    });
}

/* CALENDAR */

function init_calendar() {
    if (typeof $.fn.fullCalendar === "undefined") {
        return;
    }
    console.log("init_calendar");

    var date = new Date(),
        d = date.getDate(),
        m = date.getMonth(),
        y = date.getFullYear(),
        started,
        categoryClass;

    var calendar = $("#calendar").fullCalendar({
        header: {
            left: "prev,next today",
            center: "title",
            right: "month,agendaWeek,agendaDay,listMonth",
        },
        selectable: true,
        selectHelper: true,
        select: function (start, end, allDay) {
            $("#fc_create").click();

            started = start;
            ended = end;

            $(".antosubmit").on("click", function () {
                var title = $("#title").val();
                if (end) {
                    ended = end;
                }

                categoryClass = $("#event_type").val();

                if (title) {
                    calendar.fullCalendar(
                        "renderEvent",
                        {
                            title: title,
                            start: started,
                            end: end,
                            allDay: allDay,
                        },
                        true // make the event "stick"
                    );
                }

                $("#title").val("");

                calendar.fullCalendar("unselect");

                $(".antoclose").click();

                return false;
            });
        },
        eventClick: function (calEvent, jsEvent, view) {
            $("#fc_edit").click();
            $("#title2").val(calEvent.title);

            categoryClass = $("#event_type").val();

            $(".antosubmit2").on("click", function () {
                calEvent.title = $("#title2").val();

                calendar.fullCalendar("updateEvent", calEvent);
                $(".antoclose2").click();
            });

            calendar.fullCalendar("unselect");
        },
        editable: true,
        events: [
            {
                title: "All Day Event",
                start: new Date(y, m, 1),
            },
            {
                title: "Long Event",
                start: new Date(y, m, d - 5),
                end: new Date(y, m, d - 2),
            },
            {
                title: "Meeting",
                start: new Date(y, m, d, 10, 30),
                allDay: false,
            },
            {
                title: "Lunch",
                start: new Date(y, m, d + 14, 12, 0),
                end: new Date(y, m, d, 14, 0),
                allDay: false,
            },
            {
                title: "Birthday Party",
                start: new Date(y, m, d + 1, 19, 0),
                end: new Date(y, m, d + 1, 22, 30),
                allDay: false,
            },
            {
                title: "Click for Google",
                start: new Date(y, m, 28),
                end: new Date(y, m, 29),
                url: "http://google.com/",
            },
        ],
    });
}

/* DATA TABLES */

function init_DataTables() {
    console.log("run_datatables");

    if (typeof $.fn.DataTable === "undefined") {
        return;
    }
    console.log("init_DataTables");

    var handleDataTableButtons = function () {
        if ($("#datatable-buttons").length) {
            $("#datatable-buttons").DataTable({
                dom: "Blfrtip",
                buttons: [
                    {
                        extend: "copy",
                        className: "btn-sm",
                    },
                    {
                        extend: "csv",
                        className: "btn-sm",
                    },
                    {
                        extend: "excel",
                        className: "btn-sm",
                    },
                    {
                        extend: "pdfHtml5",
                        className: "btn-sm",
                    },
                    {
                        extend: "print",
                        className: "btn-sm",
                    },
                ],
                responsive: true,
            });
        }
    };

    TableManageButtons = (function () {
        "use strict";
        return {
            init: function () {
                handleDataTableButtons();
            },
        };
    })();

    $("#datatable").dataTable();

    $("#datatable-keytable").DataTable({
        keys: true,
    });

    $("#datatable-responsive").DataTable();

    $("#datatable-scroller").DataTable({
        ajax: "js/datatables/json/scroller-demo.json",
        deferRender: true,
        scrollY: 380,
        scrollCollapse: true,
        scroller: true,
    });

    $("#datatable-fixed-header").DataTable({
        fixedHeader: true,
    });

    var $datatable = $("#datatable-checkbox");

    $datatable.dataTable({
        order: [[1, "asc"]],
        columnDefs: [{ orderable: false, targets: [0] }],
    });
    $datatable.on("draw.dt", function () {
        $("checkbox input").iCheck({
            checkboxClass: "icheckbox_flat-green",
        });
    });

    TableManageButtons.init();
}

/* CHART - MORRIS  */

function init_morris_charts() {
    if (typeof Morris === "undefined") {
        return;
    }
    console.log("init_morris_charts");

    if ($("#graph_bar").length) {
        Morris.Bar({
            element: "graph_bar",
            data: [
                { device: "iPhone 4", geekbench: 380 },
                { device: "iPhone 4S", geekbench: 655 },
                { device: "iPhone 3GS", geekbench: 275 },
                { device: "iPhone 5", geekbench: 1571 },
                { device: "iPhone 5S", geekbench: 655 },
                { device: "iPhone 6", geekbench: 2154 },
                { device: "iPhone 6 Plus", geekbench: 1144 },
                { device: "iPhone 6S", geekbench: 2371 },
                { device: "iPhone 6S Plus", geekbench: 1471 },
                { device: "Other", geekbench: 1371 },
            ],
            xkey: "device",
            ykeys: ["geekbench"],
            labels: ["Geekbench"],
            barRatio: 0.4,
            barColors: ["#26B99A", "#34495E", "#ACADAC", "#3498DB"],
            xLabelAngle: 35,
            hideHover: "auto",
            resize: true,
        });
    }

    if ($("#graph_bar_group").length) {
        Morris.Bar({
            element: "graph_bar_group",
            data: [
                { period: "2016-10-01", licensed: 807, sorned: 660 },
                { period: "2016-09-30", licensed: 1251, sorned: 729 },
                { period: "2016-09-29", licensed: 1769, sorned: 1018 },
                { period: "2016-09-20", licensed: 2246, sorned: 1461 },
                { period: "2016-09-19", licensed: 2657, sorned: 1967 },
                { period: "2016-09-18", licensed: 3148, sorned: 2627 },
                { period: "2016-09-17", licensed: 3471, sorned: 3740 },
                { period: "2016-09-16", licensed: 2871, sorned: 2216 },
                { period: "2016-09-15", licensed: 2401, sorned: 1656 },
                { period: "2016-09-10", licensed: 2115, sorned: 1022 },
            ],
            xkey: "period",
            barColors: ["#26B99A", "#34495E", "#ACADAC", "#3498DB"],
            ykeys: ["licensed", "sorned"],
            labels: ["Licensed", "SORN"],
            hideHover: "auto",
            xLabelAngle: 60,
            resize: true,
        });
    }

    if ($("#graphx").length) {
        Morris.Bar({
            element: "graphx",
            data: [
                { x: "2015 Q1", y: 2, z: 3, a: 4 },
                { x: "2015 Q2", y: 3, z: 5, a: 6 },
                { x: "2015 Q3", y: 4, z: 3, a: 2 },
                { x: "2015 Q4", y: 2, z: 4, a: 5 },
            ],
            xkey: "x",
            ykeys: ["y", "z", "a"],
            barColors: ["#26B99A", "#34495E", "#ACADAC", "#3498DB"],
            hideHover: "auto",
            labels: ["Y", "Z", "A"],
            resize: true,
        }).on("click", function (i, row) {
            console.log(i, row);
        });
    }

    if ($("#graph_area").length) {
        Morris.Area({
            element: "graph_area",
            data: [
                { period: "2014 Q1", iphone: 2666, ipad: null, itouch: 2647 },
                { period: "2014 Q2", iphone: 2778, ipad: 2294, itouch: 2441 },
                { period: "2014 Q3", iphone: 4912, ipad: 1969, itouch: 2501 },
                { period: "2014 Q4", iphone: 3767, ipad: 3597, itouch: 5689 },
                { period: "2015 Q1", iphone: 6810, ipad: 1914, itouch: 2293 },
                { period: "2015 Q2", iphone: 5670, ipad: 4293, itouch: 1881 },
                { period: "2015 Q3", iphone: 4820, ipad: 3795, itouch: 1588 },
                { period: "2015 Q4", iphone: 15073, ipad: 5967, itouch: 5175 },
                { period: "2016 Q1", iphone: 10687, ipad: 4460, itouch: 2028 },
                { period: "2016 Q2", iphone: 8432, ipad: 5713, itouch: 1791 },
            ],
            xkey: "period",
            ykeys: ["iphone", "ipad", "itouch"],
            lineColors: ["#26B99A", "#34495E", "#ACADAC", "#3498DB"],
            labels: ["iPhone", "iPad", "iPod Touch"],
            pointSize: 2,
            hideHover: "auto",
            resize: true,
        });
    }

    if ($("#graph_donut").length) {
        Morris.Donut({
            element: "graph_donut",
            data: [
                { label: "Jam", value: 25 },
                { label: "Frosted", value: 40 },
                { label: "Custard", value: 25 },
                { label: "Sugar", value: 10 },
            ],
            colors: ["#26B99A", "#34495E", "#ACADAC", "#3498DB"],
            formatter: function (y) {
                return y + "%";
            },
            resize: true,
        });
    }

    if ($("#graph_line").length) {
        Morris.Line({
            element: "graph_line",
            xkey: "year",
            ykeys: ["value"],
            labels: ["Value"],
            hideHover: "auto",
            lineColors: ["#26B99A", "#34495E", "#ACADAC", "#3498DB"],
            data: [
                { year: "2012", value: 20 },
                { year: "2013", value: 10 },
                { year: "2014", value: 5 },
                { year: "2015", value: 5 },
                { year: "2016", value: 20 },
            ],
            resize: true,
        });

        $MENU_TOGGLE.on("click", function () {
            $(window).resize();
        });
    }
}

/* ECHRTS */

function init_echarts() {
    if (typeof echarts === "undefined") {
        return;
    }
    console.log("init_echarts");

    var theme = {
        color: ["#26B99A", "#34495E", "#BDC3C7", "#3498DB", "#9B59B6", "#8abb6f", "#759c6a", "#bfd3b7"],

        title: {
            itemGap: 8,
            textStyle: {
                fontWeight: "normal",
                color: "#408829",
            },
        },

        dataRange: {
            color: ["#1f610a", "#97b58d"],
        },

        toolbox: {
            color: ["#408829", "#408829", "#408829", "#408829"],
        },

        tooltip: {
            backgroundColor: "rgba(0,0,0,0.5)",
            axisPointer: {
                type: "line",
                lineStyle: {
                    color: "#408829",
                    type: "dashed",
                },
                crossStyle: {
                    color: "#408829",
                },
                shadowStyle: {
                    color: "rgba(200,200,200,0.3)",
                },
            },
        },

        dataZoom: {
            dataBackgroundColor: "#eee",
            fillerColor: "rgba(64,136,41,0.2)",
            handleColor: "#408829",
        },
        grid: {
            borderWidth: 0,
        },

        categoryAxis: {
            axisLine: {
                lineStyle: {
                    color: "#408829",
                },
            },
            splitLine: {
                lineStyle: {
                    color: ["#eee"],
                },
            },
        },

        valueAxis: {
            axisLine: {
                lineStyle: {
                    color: "#408829",
                },
            },
            splitArea: {
                show: true,
                areaStyle: {
                    color: ["rgba(250,250,250,0.1)", "rgba(200,200,200,0.1)"],
                },
            },
            splitLine: {
                lineStyle: {
                    color: ["#eee"],
                },
            },
        },
        timeline: {
            lineStyle: {
                color: "#408829",
            },
            controlStyle: {
                normal: { color: "#408829" },
                emphasis: { color: "#408829" },
            },
        },

        k: {
            itemStyle: {
                normal: {
                    color: "#68a54a",
                    color0: "#a9cba2",
                    lineStyle: {
                        width: 1,
                        color: "#408829",
                        color0: "#86b379",
                    },
                },
            },
        },
        map: {
            itemStyle: {
                normal: {
                    areaStyle: {
                        color: "#ddd",
                    },
                    label: {
                        textStyle: {
                            color: "#c12e34",
                        },
                    },
                },
                emphasis: {
                    areaStyle: {
                        color: "#99d2dd",
                    },
                    label: {
                        textStyle: {
                            color: "#c12e34",
                        },
                    },
                },
            },
        },
        force: {
            itemStyle: {
                normal: {
                    linkStyle: {
                        strokeColor: "#408829",
                    },
                },
            },
        },
        chord: {
            padding: 4,
            itemStyle: {
                normal: {
                    lineStyle: {
                        width: 1,
                        color: "rgba(128, 128, 128, 0.5)",
                    },
                    chordStyle: {
                        lineStyle: {
                            width: 1,
                            color: "rgba(128, 128, 128, 0.5)",
                        },
                    },
                },
                emphasis: {
                    lineStyle: {
                        width: 1,
                        color: "rgba(128, 128, 128, 0.5)",
                    },
                    chordStyle: {
                        lineStyle: {
                            width: 1,
                            color: "rgba(128, 128, 128, 0.5)",
                        },
                    },
                },
            },
        },
        gauge: {
            startAngle: 225,
            endAngle: -45,
            axisLine: {
                show: true,
                lineStyle: {
                    color: [
                        [0.2, "#86b379"],
                        [0.8, "#68a54a"],
                        [1, "#408829"],
                    ],
                    width: 8,
                },
            },
            axisTick: {
                splitNumber: 10,
                length: 12,
                lineStyle: {
                    color: "auto",
                },
            },
            axisLabel: {
                textStyle: {
                    color: "auto",
                },
            },
            splitLine: {
                length: 18,
                lineStyle: {
                    color: "auto",
                },
            },
            pointer: {
                length: "90%",
                color: "auto",
            },
            title: {
                textStyle: {
                    color: "#333",
                },
            },
            detail: {
                textStyle: {
                    color: "auto",
                },
            },
        },
        textStyle: {
            fontFamily: "Arial, Verdana, sans-serif",
        },
    };

    //echart Bar

    if ($("#mainb").length) {
        var echartBar = echarts.init(document.getElementById("mainb"), theme);

        echartBar.setOption({
            title: {
                text: "Graph title",
                subtext: "Graph Sub-text",
            },
            tooltip: {
                trigger: "axis",
            },
            legend: {
                data: ["sales", "purchases"],
            },
            toolbox: {
                show: false,
            },
            calculable: false,
            xAxis: [
                {
                    type: "category",
                    data: ["1?", "2?", "3?", "4?", "5?", "6?", "7?", "8?", "9?", "10?", "11?", "12?"],
                },
            ],
            yAxis: [
                {
                    type: "value",
                },
            ],
            series: [
                {
                    name: "sales",
                    type: "bar",
                    data: [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],
                    markPoint: {
                        data: [
                            {
                                type: "max",
                                name: "???",
                            },
                            {
                                type: "min",
                                name: "???",
                            },
                        ],
                    },
                    markLine: {
                        data: [
                            {
                                type: "average",
                                name: "???",
                            },
                        ],
                    },
                },
                {
                    name: "purchases",
                    type: "bar",
                    data: [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3],
                    markPoint: {
                        data: [
                            {
                                name: "sales",
                                value: 182.2,
                                xAxis: 7,
                                yAxis: 183,
                            },
                            {
                                name: "purchases",
                                value: 2.3,
                                xAxis: 11,
                                yAxis: 3,
                            },
                        ],
                    },
                    markLine: {
                        data: [
                            {
                                type: "average",
                                name: "???",
                            },
                        ],
                    },
                },
            ],
        });
    }

    //echart Radar

    if ($("#echart_sonar").length) {
        var echartRadar = echarts.init(document.getElementById("echart_sonar"), theme);

        echartRadar.setOption({
            title: {
                text: "Budget vs spending",
                subtext: "Subtitle",
            },
            tooltip: {
                trigger: "item",
            },
            legend: {
                orient: "vertical",
                x: "right",
                y: "bottom",
                data: ["Allocated Budget", "Actual Spending"],
            },
            toolbox: {
                show: true,
                feature: {
                    restore: {
                        show: true,
                        title: "Restore",
                    },
                    saveAsImage: {
                        show: true,
                        title: "Save Image",
                    },
                },
            },
            polar: [
                {
                    indicator: [
                        {
                            text: "Sales",
                            max: 6000,
                        },
                        {
                            text: "Administration",
                            max: 16000,
                        },
                        {
                            text: "Information Techology",
                            max: 30000,
                        },
                        {
                            text: "Customer Support",
                            max: 38000,
                        },
                        {
                            text: "Development",
                            max: 52000,
                        },
                        {
                            text: "Marketing",
                            max: 25000,
                        },
                    ],
                },
            ],
            calculable: true,
            series: [
                {
                    name: "Budget vs spending",
                    type: "radar",
                    data: [
                        {
                            value: [4300, 10000, 28000, 35000, 50000, 19000],
                            name: "Allocated Budget",
                        },
                        {
                            value: [5000, 14000, 28000, 31000, 42000, 21000],
                            name: "Actual Spending",
                        },
                    ],
                },
            ],
        });
    }

    //echart Funnel

    if ($("#echart_pyramid").length) {
        var echartFunnel = echarts.init(document.getElementById("echart_pyramid"), theme);

        echartFunnel.setOption({
            title: {
                text: "Echart Pyramid Graph",
                subtext: "Subtitle",
            },
            tooltip: {
                trigger: "item",
                formatter: "{a} <br/>{b} : {c}%",
            },
            toolbox: {
                show: true,
                feature: {
                    restore: {
                        show: true,
                        title: "Restore",
                    },
                    saveAsImage: {
                        show: true,
                        title: "Save Image",
                    },
                },
            },
            legend: {
                data: ["Something #1", "Something #2", "Something #3", "Something #4", "Something #5"],
                orient: "vertical",
                x: "left",
                y: "bottom",
            },
            calculable: true,
            series: [
                {
                    name: "漏斗图",
                    type: "funnel",
                    width: "40%",
                    data: [
                        {
                            value: 60,
                            name: "Something #1",
                        },
                        {
                            value: 40,
                            name: "Something #2",
                        },
                        {
                            value: 20,
                            name: "Something #3",
                        },
                        {
                            value: 80,
                            name: "Something #4",
                        },
                        {
                            value: 100,
                            name: "Something #5",
                        },
                    ],
                },
            ],
        });
    }

    //echart Gauge

    if ($("#echart_gauge").length) {
        var echartGauge = echarts.init(document.getElementById("echart_gauge"), theme);

        echartGauge.setOption({
            tooltip: {
                formatter: "{a} <br/>{b} : {c}%",
            },
            toolbox: {
                show: true,
                feature: {
                    restore: {
                        show: true,
                        title: "Restore",
                    },
                    saveAsImage: {
                        show: true,
                        title: "Save Image",
                    },
                },
            },
            series: [
                {
                    name: "Performance",
                    type: "gauge",
                    center: ["50%", "50%"],
                    startAngle: 140,
                    endAngle: -140,
                    min: 0,
                    max: 100,
                    precision: 0,
                    splitNumber: 10,
                    axisLine: {
                        show: true,
                        lineStyle: {
                            color: [
                                [0.2, "lightgreen"],
                                [0.4, "orange"],
                                [0.8, "skyblue"],
                                [1, "#ff4500"],
                            ],
                            width: 30,
                        },
                    },
                    axisTick: {
                        show: true,
                        splitNumber: 5,
                        length: 8,
                        lineStyle: {
                            color: "#eee",
                            width: 1,
                            type: "solid",
                        },
                    },
                    axisLabel: {
                        show: true,
                        formatter: function (v) {
                            switch (v + "") {
                                case "10":
                                    return "a";
                                case "30":
                                    return "b";
                                case "60":
                                    return "c";
                                case "90":
                                    return "d";
                                default:
                                    return "";
                            }
                        },
                        textStyle: {
                            color: "#333",
                        },
                    },
                    splitLine: {
                        show: true,
                        length: 30,
                        lineStyle: {
                            color: "#eee",
                            width: 2,
                            type: "solid",
                        },
                    },
                    pointer: {
                        length: "80%",
                        width: 8,
                        color: "auto",
                    },
                    title: {
                        show: true,
                        offsetCenter: ["-65%", -10],
                        textStyle: {
                            color: "#333",
                            fontSize: 15,
                        },
                    },
                    detail: {
                        show: true,
                        backgroundColor: "rgba(0,0,0,0)",
                        borderWidth: 0,
                        borderColor: "#ccc",
                        width: 100,
                        height: 40,
                        offsetCenter: ["-60%", 10],
                        formatter: "{value}%",
                        textStyle: {
                            color: "auto",
                            fontSize: 30,
                        },
                    },
                    data: [
                        {
                            value: 50,
                            name: "Performance",
                        },
                    ],
                },
            ],
        });
    }

    //echart Line

    if ($("#echart_line").length) {
        var echartLine = echarts.init(document.getElementById("echart_line"), theme);

        echartLine.setOption({
            title: {
                text: "Line Graph",
                subtext: "Subtitle",
            },
            tooltip: {
                trigger: "axis",
            },
            legend: {
                x: 220,
                y: 40,
                data: ["Intent", "Pre-order", "Deal"],
            },
            toolbox: {
                show: true,
                feature: {
                    magicType: {
                        show: true,
                        title: {
                            line: "Line",
                            bar: "Bar",
                            stack: "Stack",
                            tiled: "Tiled",
                        },
                        type: ["line", "bar", "stack", "tiled"],
                    },
                    restore: {
                        show: true,
                        title: "Restore",
                    },
                    saveAsImage: {
                        show: true,
                        title: "Save Image",
                    },
                },
            },
            calculable: true,
            xAxis: [
                {
                    type: "category",
                    boundaryGap: false,
                    data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
                },
            ],
            yAxis: [
                {
                    type: "value",
                },
            ],
            series: [
                {
                    name: "Deal",
                    type: "line",
                    smooth: true,
                    itemStyle: {
                        normal: {
                            areaStyle: {
                                type: "default",
                            },
                        },
                    },
                    data: [10, 12, 21, 54, 260, 830, 710],
                },
                {
                    name: "Pre-order",
                    type: "line",
                    smooth: true,
                    itemStyle: {
                        normal: {
                            areaStyle: {
                                type: "default",
                            },
                        },
                    },
                    data: [30, 182, 434, 791, 390, 30, 10],
                },
                {
                    name: "Intent",
                    type: "line",
                    smooth: true,
                    itemStyle: {
                        normal: {
                            areaStyle: {
                                type: "default",
                            },
                        },
                    },
                    data: [1320, 1132, 601, 234, 120, 90, 20],
                },
            ],
        });
    }

    //echart Scatter

    if ($("#echart_scatter").length) {
        var echartScatter = echarts.init(document.getElementById("echart_scatter"), theme);

        echartScatter.setOption({
            title: {
                text: "Scatter Graph",
                subtext: "Heinz  2003",
            },
            tooltip: {
                trigger: "axis",
                showDelay: 0,
                axisPointer: {
                    type: "cross",
                    lineStyle: {
                        type: "dashed",
                        width: 1,
                    },
                },
            },
            legend: {
                data: ["Data2", "Data1"],
            },
            toolbox: {
                show: true,
                feature: {
                    saveAsImage: {
                        show: true,
                        title: "Save Image",
                    },
                },
            },
            xAxis: [
                {
                    type: "value",
                    scale: true,
                    axisLabel: {
                        formatter: "{value} cm",
                    },
                },
            ],
            yAxis: [
                {
                    type: "value",
                    scale: true,
                    axisLabel: {
                        formatter: "{value} kg",
                    },
                },
            ],
            series: [
                {
                    name: "Data1",
                    type: "scatter",
                    tooltip: {
                        trigger: "item",
                        formatter: function (params) {
                            if (params.value.length > 1) {
                                return (
                                    params.seriesName + " :<br/>" + params.value[0] + "cm " + params.value[1] + "kg "
                                );
                            } else {
                                return params.seriesName + " :<br/>" + params.name + " : " + params.value + "kg ";
                            }
                        },
                    },
                    data: [
                        [161.2, 51.6],
                        [167.5, 59.0],
                        [159.5, 49.2],
                        [157.0, 63.0],
                        [155.8, 53.6],
                        [170.0, 59.0],
                        [159.1, 47.6],
                        [166.0, 69.8],
                        [176.2, 66.8],
                        [160.2, 75.2],
                        [172.5, 55.2],
                        [170.9, 54.2],
                        [172.9, 62.5],
                        [153.4, 42.0],
                        [160.0, 50.0],
                        [147.2, 49.8],
                        [168.2, 49.2],
                        [175.0, 73.2],
                        [157.0, 47.8],
                        [167.6, 68.8],
                        [159.5, 50.6],
                        [175.0, 82.5],
                        [166.8, 57.2],
                        [176.5, 87.8],
                        [170.2, 72.8],
                        [174.0, 54.5],
                        [173.0, 59.8],
                        [179.9, 67.3],
                        [170.5, 67.8],
                        [160.0, 47.0],
                        [154.4, 46.2],
                        [162.0, 55.0],
                        [176.5, 83.0],
                        [160.0, 54.4],
                        [152.0, 45.8],
                        [162.1, 53.6],
                        [170.0, 73.2],
                        [160.2, 52.1],
                        [161.3, 67.9],
                        [166.4, 56.6],
                        [168.9, 62.3],
                        [163.8, 58.5],
                        [167.6, 54.5],
                        [160.0, 50.2],
                        [161.3, 60.3],
                        [167.6, 58.3],
                        [165.1, 56.2],
                        [160.0, 50.2],
                        [170.0, 72.9],
                        [157.5, 59.8],
                        [167.6, 61.0],
                        [160.7, 69.1],
                        [163.2, 55.9],
                        [152.4, 46.5],
                        [157.5, 54.3],
                        [168.3, 54.8],
                        [180.3, 60.7],
                        [165.5, 60.0],
                        [165.0, 62.0],
                        [164.5, 60.3],
                        [156.0, 52.7],
                        [160.0, 74.3],
                        [163.0, 62.0],
                        [165.7, 73.1],
                        [161.0, 80.0],
                        [162.0, 54.7],
                        [166.0, 53.2],
                        [174.0, 75.7],
                        [172.7, 61.1],
                        [167.6, 55.7],
                        [151.1, 48.7],
                        [164.5, 52.3],
                        [163.5, 50.0],
                        [152.0, 59.3],
                        [169.0, 62.5],
                        [164.0, 55.7],
                        [161.2, 54.8],
                        [155.0, 45.9],
                        [170.0, 70.6],
                        [176.2, 67.2],
                        [170.0, 69.4],
                        [162.5, 58.2],
                        [170.3, 64.8],
                        [164.1, 71.6],
                        [169.5, 52.8],
                        [163.2, 59.8],
                        [154.5, 49.0],
                        [159.8, 50.0],
                        [173.2, 69.2],
                        [170.0, 55.9],
                        [161.4, 63.4],
                        [169.0, 58.2],
                        [166.2, 58.6],
                        [159.4, 45.7],
                        [162.5, 52.2],
                        [159.0, 48.6],
                        [162.8, 57.8],
                        [159.0, 55.6],
                        [179.8, 66.8],
                        [162.9, 59.4],
                        [161.0, 53.6],
                        [151.1, 73.2],
                        [168.2, 53.4],
                        [168.9, 69.0],
                        [173.2, 58.4],
                        [171.8, 56.2],
                        [178.0, 70.6],
                        [164.3, 59.8],
                        [163.0, 72.0],
                        [168.5, 65.2],
                        [166.8, 56.6],
                        [172.7, 105.2],
                        [163.5, 51.8],
                        [169.4, 63.4],
                        [167.8, 59.0],
                        [159.5, 47.6],
                        [167.6, 63.0],
                        [161.2, 55.2],
                        [160.0, 45.0],
                        [163.2, 54.0],
                        [162.2, 50.2],
                        [161.3, 60.2],
                        [149.5, 44.8],
                        [157.5, 58.8],
                        [163.2, 56.4],
                        [172.7, 62.0],
                        [155.0, 49.2],
                        [156.5, 67.2],
                        [164.0, 53.8],
                        [160.9, 54.4],
                        [162.8, 58.0],
                        [167.0, 59.8],
                        [160.0, 54.8],
                        [160.0, 43.2],
                        [168.9, 60.5],
                        [158.2, 46.4],
                        [156.0, 64.4],
                        [160.0, 48.8],
                        [167.1, 62.2],
                        [158.0, 55.5],
                        [167.6, 57.8],
                        [156.0, 54.6],
                        [162.1, 59.2],
                        [173.4, 52.7],
                        [159.8, 53.2],
                        [170.5, 64.5],
                        [159.2, 51.8],
                        [157.5, 56.0],
                        [161.3, 63.6],
                        [162.6, 63.2],
                        [160.0, 59.5],
                        [168.9, 56.8],
                        [165.1, 64.1],
                        [162.6, 50.0],
                        [165.1, 72.3],
                        [166.4, 55.0],
                        [160.0, 55.9],
                        [152.4, 60.4],
                        [170.2, 69.1],
                        [162.6, 84.5],
                        [170.2, 55.9],
                        [158.8, 55.5],
                        [172.7, 69.5],
                        [167.6, 76.4],
                        [162.6, 61.4],
                        [167.6, 65.9],
                        [156.2, 58.6],
                        [175.2, 66.8],
                        [172.1, 56.6],
                        [162.6, 58.6],
                        [160.0, 55.9],
                        [165.1, 59.1],
                        [182.9, 81.8],
                        [166.4, 70.7],
                        [165.1, 56.8],
                        [177.8, 60.0],
                        [165.1, 58.2],
                        [175.3, 72.7],
                        [154.9, 54.1],
                        [158.8, 49.1],
                        [172.7, 75.9],
                        [168.9, 55.0],
                        [161.3, 57.3],
                        [167.6, 55.0],
                        [165.1, 65.5],
                        [175.3, 65.5],
                        [157.5, 48.6],
                        [163.8, 58.6],
                        [167.6, 63.6],
                        [165.1, 55.2],
                        [165.1, 62.7],
                        [168.9, 56.6],
                        [162.6, 53.9],
                        [164.5, 63.2],
                        [176.5, 73.6],
                        [168.9, 62.0],
                        [175.3, 63.6],
                        [159.4, 53.2],
                        [160.0, 53.4],
                        [170.2, 55.0],
                        [162.6, 70.5],
                        [167.6, 54.5],
                        [162.6, 54.5],
                        [160.7, 55.9],
                        [160.0, 59.0],
                        [157.5, 63.6],
                        [162.6, 54.5],
                        [152.4, 47.3],
                        [170.2, 67.7],
                        [165.1, 80.9],
                        [172.7, 70.5],
                        [165.1, 60.9],
                        [170.2, 63.6],
                        [170.2, 54.5],
                        [170.2, 59.1],
                        [161.3, 70.5],
                        [167.6, 52.7],
                        [167.6, 62.7],
                        [165.1, 86.3],
                        [162.6, 66.4],
                        [152.4, 67.3],
                        [168.9, 63.0],
                        [170.2, 73.6],
                        [175.2, 62.3],
                        [175.2, 57.7],
                        [160.0, 55.4],
                        [165.1, 104.1],
                        [174.0, 55.5],
                        [170.2, 77.3],
                        [160.0, 80.5],
                        [167.6, 64.5],
                        [167.6, 72.3],
                        [167.6, 61.4],
                        [154.9, 58.2],
                        [162.6, 81.8],
                        [175.3, 63.6],
                        [171.4, 53.4],
                        [157.5, 54.5],
                        [165.1, 53.6],
                        [160.0, 60.0],
                        [174.0, 73.6],
                        [162.6, 61.4],
                        [174.0, 55.5],
                        [162.6, 63.6],
                        [161.3, 60.9],
                        [156.2, 60.0],
                        [149.9, 46.8],
                        [169.5, 57.3],
                        [160.0, 64.1],
                        [175.3, 63.6],
                        [169.5, 67.3],
                        [160.0, 75.5],
                        [172.7, 68.2],
                        [162.6, 61.4],
                        [157.5, 76.8],
                        [176.5, 71.8],
                        [164.4, 55.5],
                        [160.7, 48.6],
                        [174.0, 66.4],
                        [163.8, 67.3],
                    ],
                    markPoint: {
                        data: [
                            {
                                type: "max",
                                name: "Max",
                            },
                            {
                                type: "min",
                                name: "Min",
                            },
                        ],
                    },
                    markLine: {
                        data: [
                            {
                                type: "average",
                                name: "Mean",
                            },
                        ],
                    },
                },
                {
                    name: "Data2",
                    type: "scatter",
                    tooltip: {
                        trigger: "item",
                        formatter: function (params) {
                            if (params.value.length > 1) {
                                return (
                                    params.seriesName + " :<br/>" + params.value[0] + "cm " + params.value[1] + "kg "
                                );
                            } else {
                                return params.seriesName + " :<br/>" + params.name + " : " + params.value + "kg ";
                            }
                        },
                    },
                    data: [
                        [174.0, 65.6],
                        [175.3, 71.8],
                        [193.5, 80.7],
                        [186.5, 72.6],
                        [187.2, 78.8],
                        [181.5, 74.8],
                        [184.0, 86.4],
                        [184.5, 78.4],
                        [175.0, 62.0],
                        [184.0, 81.6],
                        [180.0, 76.6],
                        [177.8, 83.6],
                        [192.0, 90.0],
                        [176.0, 74.6],
                        [174.0, 71.0],
                        [184.0, 79.6],
                        [192.7, 93.8],
                        [171.5, 70.0],
                        [173.0, 72.4],
                        [176.0, 85.9],
                        [176.0, 78.8],
                        [180.5, 77.8],
                        [172.7, 66.2],
                        [176.0, 86.4],
                        [173.5, 81.8],
                        [178.0, 89.6],
                        [180.3, 82.8],
                        [180.3, 76.4],
                        [164.5, 63.2],
                        [173.0, 60.9],
                        [183.5, 74.8],
                        [175.5, 70.0],
                        [188.0, 72.4],
                        [189.2, 84.1],
                        [172.8, 69.1],
                        [170.0, 59.5],
                        [182.0, 67.2],
                        [170.0, 61.3],
                        [177.8, 68.6],
                        [184.2, 80.1],
                        [186.7, 87.8],
                        [171.4, 84.7],
                        [172.7, 73.4],
                        [175.3, 72.1],
                        [180.3, 82.6],
                        [182.9, 88.7],
                        [188.0, 84.1],
                        [177.2, 94.1],
                        [172.1, 74.9],
                        [167.0, 59.1],
                        [169.5, 75.6],
                        [174.0, 86.2],
                        [172.7, 75.3],
                        [182.2, 87.1],
                        [164.1, 55.2],
                        [163.0, 57.0],
                        [171.5, 61.4],
                        [184.2, 76.8],
                        [174.0, 86.8],
                        [174.0, 72.2],
                        [177.0, 71.6],
                        [186.0, 84.8],
                        [167.0, 68.2],
                        [171.8, 66.1],
                        [182.0, 72.0],
                        [167.0, 64.6],
                        [177.8, 74.8],
                        [164.5, 70.0],
                        [192.0, 101.6],
                        [175.5, 63.2],
                        [171.2, 79.1],
                        [181.6, 78.9],
                        [167.4, 67.7],
                        [181.1, 66.0],
                        [177.0, 68.2],
                        [174.5, 63.9],
                        [177.5, 72.0],
                        [170.5, 56.8],
                        [182.4, 74.5],
                        [197.1, 90.9],
                        [180.1, 93.0],
                        [175.5, 80.9],
                        [180.6, 72.7],
                        [184.4, 68.0],
                        [175.5, 70.9],
                        [180.6, 72.5],
                        [177.0, 72.5],
                        [177.1, 83.4],
                        [181.6, 75.5],
                        [176.5, 73.0],
                        [175.0, 70.2],
                        [174.0, 73.4],
                        [165.1, 70.5],
                        [177.0, 68.9],
                        [192.0, 102.3],
                        [176.5, 68.4],
                        [169.4, 65.9],
                        [182.1, 75.7],
                        [179.8, 84.5],
                        [175.3, 87.7],
                        [184.9, 86.4],
                        [177.3, 73.2],
                        [167.4, 53.9],
                        [178.1, 72.0],
                        [168.9, 55.5],
                        [157.2, 58.4],
                        [180.3, 83.2],
                        [170.2, 72.7],
                        [177.8, 64.1],
                        [172.7, 72.3],
                        [165.1, 65.0],
                        [186.7, 86.4],
                        [165.1, 65.0],
                        [174.0, 88.6],
                        [175.3, 84.1],
                        [185.4, 66.8],
                        [177.8, 75.5],
                        [180.3, 93.2],
                        [180.3, 82.7],
                        [177.8, 58.0],
                        [177.8, 79.5],
                        [177.8, 78.6],
                        [177.8, 71.8],
                        [177.8, 116.4],
                        [163.8, 72.2],
                        [188.0, 83.6],
                        [198.1, 85.5],
                        [175.3, 90.9],
                        [166.4, 85.9],
                        [190.5, 89.1],
                        [166.4, 75.0],
                        [177.8, 77.7],
                        [179.7, 86.4],
                        [172.7, 90.9],
                        [190.5, 73.6],
                        [185.4, 76.4],
                        [168.9, 69.1],
                        [167.6, 84.5],
                        [175.3, 64.5],
                        [170.2, 69.1],
                        [190.5, 108.6],
                        [177.8, 86.4],
                        [190.5, 80.9],
                        [177.8, 87.7],
                        [184.2, 94.5],
                        [176.5, 80.2],
                        [177.8, 72.0],
                        [180.3, 71.4],
                        [171.4, 72.7],
                        [172.7, 84.1],
                        [172.7, 76.8],
                        [177.8, 63.6],
                        [177.8, 80.9],
                        [182.9, 80.9],
                        [170.2, 85.5],
                        [167.6, 68.6],
                        [175.3, 67.7],
                        [165.1, 66.4],
                        [185.4, 102.3],
                        [181.6, 70.5],
                        [172.7, 95.9],
                        [190.5, 84.1],
                        [179.1, 87.3],
                        [175.3, 71.8],
                        [170.2, 65.9],
                        [193.0, 95.9],
                        [171.4, 91.4],
                        [177.8, 81.8],
                        [177.8, 96.8],
                        [167.6, 69.1],
                        [167.6, 82.7],
                        [180.3, 75.5],
                        [182.9, 79.5],
                        [176.5, 73.6],
                        [186.7, 91.8],
                        [188.0, 84.1],
                        [188.0, 85.9],
                        [177.8, 81.8],
                        [174.0, 82.5],
                        [177.8, 80.5],
                        [171.4, 70.0],
                        [185.4, 81.8],
                        [185.4, 84.1],
                        [188.0, 90.5],
                        [188.0, 91.4],
                        [182.9, 89.1],
                        [176.5, 85.0],
                        [175.3, 69.1],
                        [175.3, 73.6],
                        [188.0, 80.5],
                        [188.0, 82.7],
                        [175.3, 86.4],
                        [170.5, 67.7],
                        [179.1, 92.7],
                        [177.8, 93.6],
                        [175.3, 70.9],
                        [182.9, 75.0],
                        [170.8, 93.2],
                        [188.0, 93.2],
                        [180.3, 77.7],
                        [177.8, 61.4],
                        [185.4, 94.1],
                        [168.9, 75.0],
                        [185.4, 83.6],
                        [180.3, 85.5],
                        [174.0, 73.9],
                        [167.6, 66.8],
                        [182.9, 87.3],
                        [160.0, 72.3],
                        [180.3, 88.6],
                        [167.6, 75.5],
                        [186.7, 101.4],
                        [175.3, 91.1],
                        [175.3, 67.3],
                        [175.9, 77.7],
                        [175.3, 81.8],
                        [179.1, 75.5],
                        [181.6, 84.5],
                        [177.8, 76.6],
                        [182.9, 85.0],
                        [177.8, 102.5],
                        [184.2, 77.3],
                        [179.1, 71.8],
                        [176.5, 87.9],
                        [188.0, 94.3],
                        [174.0, 70.9],
                        [167.6, 64.5],
                        [170.2, 77.3],
                        [167.6, 72.3],
                        [188.0, 87.3],
                        [174.0, 80.0],
                        [176.5, 82.3],
                        [180.3, 73.6],
                        [167.6, 74.1],
                        [188.0, 85.9],
                        [180.3, 73.2],
                        [167.6, 76.3],
                        [183.0, 65.9],
                        [183.0, 90.9],
                        [179.1, 89.1],
                        [170.2, 62.3],
                        [177.8, 82.7],
                        [179.1, 79.1],
                        [190.5, 98.2],
                        [177.8, 84.1],
                        [180.3, 83.2],
                        [180.3, 83.2],
                    ],
                    markPoint: {
                        data: [
                            {
                                type: "max",
                                name: "Max",
                            },
                            {
                                type: "min",
                                name: "Min",
                            },
                        ],
                    },
                    markLine: {
                        data: [
                            {
                                type: "average",
                                name: "Mean",
                            },
                        ],
                    },
                },
            ],
        });
    }

    //echart Bar Horizontal

    if ($("#echart_bar_horizontal").length) {
        var echartBar = echarts.init(document.getElementById("echart_bar_horizontal"), theme);

        echartBar.setOption({
            title: {
                text: "Bar Graph",
                subtext: "Graph subtitle",
            },
            tooltip: {
                trigger: "axis",
            },
            legend: {
                x: 100,
                data: ["2015", "2016"],
            },
            toolbox: {
                show: true,
                feature: {
                    saveAsImage: {
                        show: true,
                        title: "Save Image",
                    },
                },
            },
            calculable: true,
            xAxis: [
                {
                    type: "value",
                    boundaryGap: [0, 0.01],
                },
            ],
            yAxis: [
                {
                    type: "category",
                    data: ["Jan", "Feb", "Mar", "Apr", "May", "Jun"],
                },
            ],
            series: [
                {
                    name: "2015",
                    type: "bar",
                    data: [18203, 23489, 29034, 104970, 131744, 630230],
                },
                {
                    name: "2016",
                    type: "bar",
                    data: [19325, 23438, 31000, 121594, 134141, 681807],
                },
            ],
        });
    }

    //echart Pie Collapse

    if ($("#echart_pie2").length) {
        var echartPieCollapse = echarts.init(document.getElementById("echart_pie2"), theme);

        echartPieCollapse.setOption({
            tooltip: {
                trigger: "item",
                formatter: "{a} <br/>{b} : {c} ({d}%)",
            },
            legend: {
                x: "center",
                y: "bottom",
                data: ["rose1", "rose2", "rose3", "rose4", "rose5", "rose6"],
            },
            toolbox: {
                show: true,
                feature: {
                    magicType: {
                        show: true,
                        type: ["pie", "funnel"],
                    },
                    restore: {
                        show: true,
                        title: "Restore",
                    },
                    saveAsImage: {
                        show: true,
                        title: "Save Image",
                    },
                },
            },
            calculable: true,
            series: [
                {
                    name: "Area Mode",
                    type: "pie",
                    radius: [25, 90],
                    center: ["50%", 170],
                    roseType: "area",
                    x: "50%",
                    max: 40,
                    sort: "ascending",
                    data: [
                        {
                            value: 10,
                            name: "rose1",
                        },
                        {
                            value: 5,
                            name: "rose2",
                        },
                        {
                            value: 15,
                            name: "rose3",
                        },
                        {
                            value: 25,
                            name: "rose4",
                        },
                        {
                            value: 20,
                            name: "rose5",
                        },
                        {
                            value: 35,
                            name: "rose6",
                        },
                    ],
                },
            ],
        });
    }

    //echart Donut

    if ($("#echart_donut").length) {
        var echartDonut = echarts.init(document.getElementById("echart_donut"), theme);

        echartDonut.setOption({
            tooltip: {
                trigger: "item",
                formatter: "{a} <br/>{b} : {c} ({d}%)",
            },
            calculable: true,
            legend: {
                x: "center",
                y: "bottom",
                data: ["Direct Access", "E-mail Marketing", "Union Ad", "Video Ads", "Search Engine"],
            },
            toolbox: {
                show: true,
                feature: {
                    magicType: {
                        show: true,
                        type: ["pie", "funnel"],
                        option: {
                            funnel: {
                                x: "25%",
                                width: "50%",
                                funnelAlign: "center",
                                max: 1548,
                            },
                        },
                    },
                    restore: {
                        show: true,
                        title: "Restore",
                    },
                    saveAsImage: {
                        show: true,
                        title: "Save Image",
                    },
                },
            },
            series: [
                {
                    name: "Access to the resource",
                    type: "pie",
                    radius: ["35%", "55%"],
                    itemStyle: {
                        normal: {
                            label: {
                                show: true,
                            },
                            labelLine: {
                                show: true,
                            },
                        },
                        emphasis: {
                            label: {
                                show: true,
                                position: "center",
                                textStyle: {
                                    fontSize: "14",
                                    fontWeight: "normal",
                                },
                            },
                        },
                    },
                    data: [
                        {
                            value: 335,
                            name: "Direct Access",
                        },
                        {
                            value: 310,
                            name: "E-mail Marketing",
                        },
                        {
                            value: 234,
                            name: "Union Ad",
                        },
                        {
                            value: 135,
                            name: "Video Ads",
                        },
                        {
                            value: 1548,
                            name: "Search Engine",
                        },
                    ],
                },
            ],
        });
    }

    //echart Pie

    if ($("#echart_pie").length) {
        var echartPie = echarts.init(document.getElementById("echart_pie"), theme);

        echartPie.setOption({
            tooltip: {
                trigger: "item",
                formatter: "{a} <br/>{b} : {c} ({d}%)",
            },
            legend: {
                x: "center",
                y: "bottom",
                data: ["Direct Access", "E-mail Marketing", "Union Ad", "Video Ads", "Search Engine"],
            },
            toolbox: {
                show: true,
                feature: {
                    magicType: {
                        show: true,
                        type: ["pie", "funnel"],
                        option: {
                            funnel: {
                                x: "25%",
                                width: "50%",
                                funnelAlign: "left",
                                max: 1548,
                            },
                        },
                    },
                    restore: {
                        show: true,
                        title: "Restore",
                    },
                    saveAsImage: {
                        show: true,
                        title: "Save Image",
                    },
                },
            },
            calculable: true,
            series: [
                {
                    name: "访问来源",
                    type: "pie",
                    radius: "55%",
                    center: ["50%", "48%"],
                    data: [
                        {
                            value: 335,
                            name: "Direct Access",
                        },
                        {
                            value: 310,
                            name: "E-mail Marketing",
                        },
                        {
                            value: 234,
                            name: "Union Ad",
                        },
                        {
                            value: 135,
                            name: "Video Ads",
                        },
                        {
                            value: 1548,
                            name: "Search Engine",
                        },
                    ],
                },
            ],
        });

        var dataStyle = {
            normal: {
                label: {
                    show: false,
                },
                labelLine: {
                    show: false,
                },
            },
        };

        var placeHolderStyle = {
            normal: {
                color: "rgba(0,0,0,0)",
                label: {
                    show: false,
                },
                labelLine: {
                    show: false,
                },
            },
            emphasis: {
                color: "rgba(0,0,0,0)",
            },
        };
    }

    //echart Mini Pie

    if ($("#echart_mini_pie").length) {
        var echartMiniPie = echarts.init(document.getElementById("echart_mini_pie"), theme);

        echartMiniPie.setOption({
            title: {
                text: "Chart #2",
                subtext: "From ExcelHome",
                sublink: "http://e.weibo.com/1341556070/AhQXtjbqh",
                x: "center",
                y: "center",
                itemGap: 20,
                textStyle: {
                    color: "rgba(30,144,255,0.8)",
                    fontFamily: "微软雅黑",
                    fontSize: 35,
                    fontWeight: "bolder",
                },
            },
            tooltip: {
                show: true,
                formatter: "{a} <br/>{b} : {c} ({d}%)",
            },
            legend: {
                orient: "vertical",
                x: 170,
                y: 45,
                itemGap: 12,
                data: ["68%Something #1", "29%Something #2", "3%Something #3"],
            },
            toolbox: {
                show: true,
                feature: {
                    mark: {
                        show: true,
                    },
                    dataView: {
                        show: true,
                        title: "Text View",
                        lang: ["Text View", "Close", "Refresh"],
                        readOnly: false,
                    },
                    restore: {
                        show: true,
                        title: "Restore",
                    },
                    saveAsImage: {
                        show: true,
                        title: "Save Image",
                    },
                },
            },
            series: [
                {
                    name: "1",
                    type: "pie",
                    clockWise: false,
                    radius: [105, 130],
                    itemStyle: dataStyle,
                    data: [
                        {
                            value: 68,
                            name: "68%Something #1",
                        },
                        {
                            value: 32,
                            name: "invisible",
                            itemStyle: placeHolderStyle,
                        },
                    ],
                },
                {
                    name: "2",
                    type: "pie",
                    clockWise: false,
                    radius: [80, 105],
                    itemStyle: dataStyle,
                    data: [
                        {
                            value: 29,
                            name: "29%Something #2",
                        },
                        {
                            value: 71,
                            name: "invisible",
                            itemStyle: placeHolderStyle,
                        },
                    ],
                },
                {
                    name: "3",
                    type: "pie",
                    clockWise: false,
                    radius: [25, 80],
                    itemStyle: dataStyle,
                    data: [
                        {
                            value: 3,
                            name: "3%Something #3",
                        },
                        {
                            value: 97,
                            name: "invisible",
                            itemStyle: placeHolderStyle,
                        },
                    ],
                },
            ],
        });
    }

    //echart Map

    if ($("#echart_world_map").length) {
        var echartMap = echarts.init(document.getElementById("echart_world_map"), theme);

        echartMap.setOption({
            title: {
                text: "World Population (2010)",
                subtext: "from United Nations, Total population, both sexes combined, as of 1 July (thousands)",
                x: "center",
                y: "top",
            },
            tooltip: {
                trigger: "item",
                formatter: function (params) {
                    var value = (params.value + "").split(".");
                    value = value[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, "$1,") + "." + value[1];
                    return params.seriesName + "<br/>" + params.name + " : " + value;
                },
            },
            toolbox: {
                show: true,
                orient: "vertical",
                x: "right",
                y: "center",
                feature: {
                    mark: {
                        show: true,
                    },
                    dataView: {
                        show: true,
                        title: "Text View",
                        lang: ["Text View", "Close", "Refresh"],
                        readOnly: false,
                    },
                    restore: {
                        show: true,
                        title: "Restore",
                    },
                    saveAsImage: {
                        show: true,
                        title: "Save Image",
                    },
                },
            },
            dataRange: {
                min: 0,
                max: 1000000,
                text: ["High", "Low"],
                realtime: false,
                calculable: true,
                color: ["#087E65", "#26B99A", "#CBEAE3"],
            },
            series: [
                {
                    name: "World Population (2010)",
                    type: "map",
                    mapType: "world",
                    roam: false,
                    mapLocation: {
                        y: 60,
                    },
                    itemStyle: {
                        emphasis: {
                            label: {
                                show: true,
                            },
                        },
                    },
                    data: [
                        {
                            name: "Afghanistan",
                            value: 28397.812,
                        },
                        {
                            name: "Angola",
                            value: 19549.124,
                        },
                        {
                            name: "Albania",
                            value: 3150.143,
                        },
                        {
                            name: "United Arab Emirates",
                            value: 8441.537,
                        },
                        {
                            name: "Argentina",
                            value: 40374.224,
                        },
                        {
                            name: "Armenia",
                            value: 2963.496,
                        },
                        {
                            name: "French Southern and Antarctic Lands",
                            value: 268.065,
                        },
                        {
                            name: "Australia",
                            value: 22404.488,
                        },
                        {
                            name: "Austria",
                            value: 8401.924,
                        },
                        {
                            name: "Azerbaijan",
                            value: 9094.718,
                        },
                        {
                            name: "Burundi",
                            value: 9232.753,
                        },
                        {
                            name: "Belgium",
                            value: 10941.288,
                        },
                        {
                            name: "Benin",
                            value: 9509.798,
                        },
                        {
                            name: "Burkina Faso",
                            value: 15540.284,
                        },
                        {
                            name: "Bangladesh",
                            value: 151125.475,
                        },
                        {
                            name: "Bulgaria",
                            value: 7389.175,
                        },
                        {
                            name: "The Bahamas",
                            value: 66402.316,
                        },
                        {
                            name: "Bosnia and Herzegovina",
                            value: 3845.929,
                        },
                        {
                            name: "Belarus",
                            value: 9491.07,
                        },
                        {
                            name: "Belize",
                            value: 308.595,
                        },
                        {
                            name: "Bermuda",
                            value: 64.951,
                        },
                        {
                            name: "Bolivia",
                            value: 716.939,
                        },
                        {
                            name: "Brazil",
                            value: 195210.154,
                        },
                        {
                            name: "Brunei",
                            value: 27.223,
                        },
                        {
                            name: "Bhutan",
                            value: 716.939,
                        },
                        {
                            name: "Botswana",
                            value: 1969.341,
                        },
                        {
                            name: "Central African Republic",
                            value: 4349.921,
                        },
                        {
                            name: "Canada",
                            value: 34126.24,
                        },
                        {
                            name: "Switzerland",
                            value: 7830.534,
                        },
                        {
                            name: "Chile",
                            value: 17150.76,
                        },
                        {
                            name: "China",
                            value: 1359821.465,
                        },
                        {
                            name: "Ivory Coast",
                            value: 60508.978,
                        },
                        {
                            name: "Cameroon",
                            value: 20624.343,
                        },
                        {
                            name: "Democratic Republic of the Congo",
                            value: 62191.161,
                        },
                        {
                            name: "Republic of the Congo",
                            value: 3573.024,
                        },
                        {
                            name: "Colombia",
                            value: 46444.798,
                        },
                        {
                            name: "Costa Rica",
                            value: 4669.685,
                        },
                        {
                            name: "Cuba",
                            value: 11281.768,
                        },
                        {
                            name: "Northern Cyprus",
                            value: 1.468,
                        },
                        {
                            name: "Cyprus",
                            value: 1103.685,
                        },
                        {
                            name: "Czech Republic",
                            value: 10553.701,
                        },
                        {
                            name: "Germany",
                            value: 83017.404,
                        },
                        {
                            name: "Djibouti",
                            value: 834.036,
                        },
                        {
                            name: "Denmark",
                            value: 5550.959,
                        },
                        {
                            name: "Dominican Republic",
                            value: 10016.797,
                        },
                        {
                            name: "Algeria",
                            value: 37062.82,
                        },
                        {
                            name: "Ecuador",
                            value: 15001.072,
                        },
                        {
                            name: "Egypt",
                            value: 78075.705,
                        },
                        {
                            name: "Eritrea",
                            value: 5741.159,
                        },
                        {
                            name: "Spain",
                            value: 46182.038,
                        },
                        {
                            name: "Estonia",
                            value: 1298.533,
                        },
                        {
                            name: "Ethiopia",
                            value: 87095.281,
                        },
                        {
                            name: "Finland",
                            value: 5367.693,
                        },
                        {
                            name: "Fiji",
                            value: 860.559,
                        },
                        {
                            name: "Falkland Islands",
                            value: 49.581,
                        },
                        {
                            name: "France",
                            value: 63230.866,
                        },
                        {
                            name: "Gabon",
                            value: 1556.222,
                        },
                        {
                            name: "United Kingdom",
                            value: 62066.35,
                        },
                        {
                            name: "Georgia",
                            value: 4388.674,
                        },
                        {
                            name: "Ghana",
                            value: 24262.901,
                        },
                        {
                            name: "Guinea",
                            value: 10876.033,
                        },
                        {
                            name: "Gambia",
                            value: 1680.64,
                        },
                        {
                            name: "Guinea Bissau",
                            value: 10876.033,
                        },
                        {
                            name: "Equatorial Guinea",
                            value: 696.167,
                        },
                        {
                            name: "Greece",
                            value: 11109.999,
                        },
                        {
                            name: "Greenland",
                            value: 56.546,
                        },
                        {
                            name: "Guatemala",
                            value: 14341.576,
                        },
                        {
                            name: "French Guiana",
                            value: 231.169,
                        },
                        {
                            name: "Guyana",
                            value: 786.126,
                        },
                        {
                            name: "Honduras",
                            value: 7621.204,
                        },
                        {
                            name: "Croatia",
                            value: 4338.027,
                        },
                        {
                            name: "Haiti",
                            value: 9896.4,
                        },
                        {
                            name: "Hungary",
                            value: 10014.633,
                        },
                        {
                            name: "Indonesia",
                            value: 240676.485,
                        },
                        {
                            name: "India",
                            value: 1205624.648,
                        },
                        {
                            name: "Ireland",
                            value: 4467.561,
                        },
                        {
                            name: "Iran",
                            value: 240676.485,
                        },
                        {
                            name: "Iraq",
                            value: 30962.38,
                        },
                        {
                            name: "Iceland",
                            value: 318.042,
                        },
                        {
                            name: "Israel",
                            value: 7420.368,
                        },
                        {
                            name: "Italy",
                            value: 60508.978,
                        },
                        {
                            name: "Jamaica",
                            value: 2741.485,
                        },
                        {
                            name: "Jordan",
                            value: 6454.554,
                        },
                        {
                            name: "Japan",
                            value: 127352.833,
                        },
                        {
                            name: "Kazakhstan",
                            value: 15921.127,
                        },
                        {
                            name: "Kenya",
                            value: 40909.194,
                        },
                        {
                            name: "Kyrgyzstan",
                            value: 5334.223,
                        },
                        {
                            name: "Cambodia",
                            value: 14364.931,
                        },
                        {
                            name: "South Korea",
                            value: 51452.352,
                        },
                        {
                            name: "Kosovo",
                            value: 97.743,
                        },
                        {
                            name: "Kuwait",
                            value: 2991.58,
                        },
                        {
                            name: "Laos",
                            value: 6395.713,
                        },
                        {
                            name: "Lebanon",
                            value: 4341.092,
                        },
                        {
                            name: "Liberia",
                            value: 3957.99,
                        },
                        {
                            name: "Libya",
                            value: 6040.612,
                        },
                        {
                            name: "Sri Lanka",
                            value: 20758.779,
                        },
                        {
                            name: "Lesotho",
                            value: 2008.921,
                        },
                        {
                            name: "Lithuania",
                            value: 3068.457,
                        },
                        {
                            name: "Luxembourg",
                            value: 507.885,
                        },
                        {
                            name: "Latvia",
                            value: 2090.519,
                        },
                        {
                            name: "Morocco",
                            value: 31642.36,
                        },
                        {
                            name: "Moldova",
                            value: 103.619,
                        },
                        {
                            name: "Madagascar",
                            value: 21079.532,
                        },
                        {
                            name: "Mexico",
                            value: 117886.404,
                        },
                        {
                            name: "Macedonia",
                            value: 507.885,
                        },
                        {
                            name: "Mali",
                            value: 13985.961,
                        },
                        {
                            name: "Myanmar",
                            value: 51931.231,
                        },
                        {
                            name: "Montenegro",
                            value: 620.078,
                        },
                        {
                            name: "Mongolia",
                            value: 2712.738,
                        },
                        {
                            name: "Mozambique",
                            value: 23967.265,
                        },
                        {
                            name: "Mauritania",
                            value: 3609.42,
                        },
                        {
                            name: "Malawi",
                            value: 15013.694,
                        },
                        {
                            name: "Malaysia",
                            value: 28275.835,
                        },
                        {
                            name: "Namibia",
                            value: 2178.967,
                        },
                        {
                            name: "New Caledonia",
                            value: 246.379,
                        },
                        {
                            name: "Niger",
                            value: 15893.746,
                        },
                        {
                            name: "Nigeria",
                            value: 159707.78,
                        },
                        {
                            name: "Nicaragua",
                            value: 5822.209,
                        },
                        {
                            name: "Netherlands",
                            value: 16615.243,
                        },
                        {
                            name: "Norway",
                            value: 4891.251,
                        },
                        {
                            name: "Nepal",
                            value: 26846.016,
                        },
                        {
                            name: "New Zealand",
                            value: 4368.136,
                        },
                        {
                            name: "Oman",
                            value: 2802.768,
                        },
                        {
                            name: "Pakistan",
                            value: 173149.306,
                        },
                        {
                            name: "Panama",
                            value: 3678.128,
                        },
                        {
                            name: "Peru",
                            value: 29262.83,
                        },
                        {
                            name: "Philippines",
                            value: 93444.322,
                        },
                        {
                            name: "Papua New Guinea",
                            value: 6858.945,
                        },
                        {
                            name: "Poland",
                            value: 38198.754,
                        },
                        {
                            name: "Puerto Rico",
                            value: 3709.671,
                        },
                        {
                            name: "North Korea",
                            value: 1.468,
                        },
                        {
                            name: "Portugal",
                            value: 10589.792,
                        },
                        {
                            name: "Paraguay",
                            value: 6459.721,
                        },
                        {
                            name: "Qatar",
                            value: 1749.713,
                        },
                        {
                            name: "Romania",
                            value: 21861.476,
                        },
                        {
                            name: "Russia",
                            value: 21861.476,
                        },
                        {
                            name: "Rwanda",
                            value: 10836.732,
                        },
                        {
                            name: "Western Sahara",
                            value: 514.648,
                        },
                        {
                            name: "Saudi Arabia",
                            value: 27258.387,
                        },
                        {
                            name: "Sudan",
                            value: 35652.002,
                        },
                        {
                            name: "South Sudan",
                            value: 9940.929,
                        },
                        {
                            name: "Senegal",
                            value: 12950.564,
                        },
                        {
                            name: "Solomon Islands",
                            value: 526.447,
                        },
                        {
                            name: "Sierra Leone",
                            value: 5751.976,
                        },
                        {
                            name: "El Salvador",
                            value: 6218.195,
                        },
                        {
                            name: "Somaliland",
                            value: 9636.173,
                        },
                        {
                            name: "Somalia",
                            value: 9636.173,
                        },
                        {
                            name: "Republic of Serbia",
                            value: 3573.024,
                        },
                        {
                            name: "Suriname",
                            value: 524.96,
                        },
                        {
                            name: "Slovakia",
                            value: 5433.437,
                        },
                        {
                            name: "Slovenia",
                            value: 2054.232,
                        },
                        {
                            name: "Sweden",
                            value: 9382.297,
                        },
                        {
                            name: "Swaziland",
                            value: 1193.148,
                        },
                        {
                            name: "Syria",
                            value: 7830.534,
                        },
                        {
                            name: "Chad",
                            value: 11720.781,
                        },
                        {
                            name: "Togo",
                            value: 6306.014,
                        },
                        {
                            name: "Thailand",
                            value: 66402.316,
                        },
                        {
                            name: "Tajikistan",
                            value: 7627.326,
                        },
                        {
                            name: "Turkmenistan",
                            value: 5041.995,
                        },
                        {
                            name: "East Timor",
                            value: 10016.797,
                        },
                        {
                            name: "Trinidad and Tobago",
                            value: 1328.095,
                        },
                        {
                            name: "Tunisia",
                            value: 10631.83,
                        },
                        {
                            name: "Turkey",
                            value: 72137.546,
                        },
                        {
                            name: "United Republic of Tanzania",
                            value: 44973.33,
                        },
                        {
                            name: "Uganda",
                            value: 33987.213,
                        },
                        {
                            name: "Ukraine",
                            value: 46050.22,
                        },
                        {
                            name: "Uruguay",
                            value: 3371.982,
                        },
                        {
                            name: "United States of America",
                            value: 312247.116,
                        },
                        {
                            name: "Uzbekistan",
                            value: 27769.27,
                        },
                        {
                            name: "Venezuela",
                            value: 236.299,
                        },
                        {
                            name: "Vietnam",
                            value: 89047.397,
                        },
                        {
                            name: "Vanuatu",
                            value: 236.299,
                        },
                        {
                            name: "West Bank",
                            value: 13.565,
                        },
                        {
                            name: "Yemen",
                            value: 22763.008,
                        },
                        {
                            name: "South Africa",
                            value: 51452.352,
                        },
                        {
                            name: "Zambia",
                            value: 13216.985,
                        },
                        {
                            name: "Zimbabwe",
                            value: 13076.978,
                        },
                    ],
                },
            ],
        });
    }
}

$(document).ready(function () {
    init_sparklines();
    init_flot_chart();
    init_sidebar();
    init_wysiwyg();
    init_InputMask();
    init_JQVmap();
    init_cropper();
    init_knob();
    init_IonRangeSlider();
    init_ColorPicker();
    init_TagsInput();
    init_parsley();
    init_daterangepicker();
    init_daterangepicker_right();
    init_daterangepicker_single_call();
    init_daterangepicker_reservation();
    init_SmartWizard();
    init_EasyPieChart();
    init_charts();
    init_echarts();
    init_morris_charts();
    init_skycons();
    init_select2();
    init_validator();
    init_DataTables();
    init_chart_doughnut();
    init_gauge();
    init_PNotify();
    init_starrr();
    init_calendar();
    init_compose();
    init_CustomNotification();
    init_autosize();
    init_autocomplete();
});
